#define SIMDE_TEST_ARM_NEON_INSN st1_x4 #include "test/test.h" #include "test-neon.h" #include "../../../simde/arm/neon/st1_x4.h" #if !defined(SIMDE_BUG_INTEL_857088) static int test_simde_vst1_f16_x4 (SIMDE_MUNIT_TEST_ARGS) { #if 1 struct { simde_float16_t val[4][4]; simde_float16_t r[16]; } test_vec[] = { { { { SIMDE_FLOAT16_VALUE( 82.328), SIMDE_FLOAT16_VALUE( 70.920), SIMDE_FLOAT16_VALUE( - 2.164), SIMDE_FLOAT16_VALUE( 20.248) }, { SIMDE_FLOAT16_VALUE( 17.827), SIMDE_FLOAT16_VALUE( - 14.465), SIMDE_FLOAT16_VALUE( - 88.806), SIMDE_FLOAT16_VALUE( 79.077) }, { SIMDE_FLOAT16_VALUE( 1.568), SIMDE_FLOAT16_VALUE( - 20.954), SIMDE_FLOAT16_VALUE( - 34.479), SIMDE_FLOAT16_VALUE( - 40.339) }, { SIMDE_FLOAT16_VALUE( 35.388), SIMDE_FLOAT16_VALUE( 7.745), SIMDE_FLOAT16_VALUE( 48.873), SIMDE_FLOAT16_VALUE( - 89.095) } }, { SIMDE_FLOAT16_VALUE( 82.328), SIMDE_FLOAT16_VALUE( 70.920), SIMDE_FLOAT16_VALUE( - 2.164), SIMDE_FLOAT16_VALUE( 20.248), SIMDE_FLOAT16_VALUE( 17.827), SIMDE_FLOAT16_VALUE( - 14.465), SIMDE_FLOAT16_VALUE( - 88.806), SIMDE_FLOAT16_VALUE( 79.077), SIMDE_FLOAT16_VALUE( 1.568), SIMDE_FLOAT16_VALUE( - 20.954), SIMDE_FLOAT16_VALUE( - 34.479), SIMDE_FLOAT16_VALUE( - 40.339), SIMDE_FLOAT16_VALUE( 35.388), SIMDE_FLOAT16_VALUE( 7.745), SIMDE_FLOAT16_VALUE( 48.873), SIMDE_FLOAT16_VALUE( - 89.095) } }, { { { SIMDE_FLOAT16_VALUE( - 85.226), SIMDE_FLOAT16_VALUE( 68.050), SIMDE_FLOAT16_VALUE( - 79.246), SIMDE_FLOAT16_VALUE( - 6.999) }, { SIMDE_FLOAT16_VALUE( - 57.697), SIMDE_FLOAT16_VALUE( - 37.357), SIMDE_FLOAT16_VALUE( - 77.997), SIMDE_FLOAT16_VALUE( - 49.541) }, { SIMDE_FLOAT16_VALUE( - 97.845), SIMDE_FLOAT16_VALUE( - 58.594), SIMDE_FLOAT16_VALUE( 49.242), SIMDE_FLOAT16_VALUE( 38.316) }, { SIMDE_FLOAT16_VALUE( - 4.874), SIMDE_FLOAT16_VALUE( 31.136), SIMDE_FLOAT16_VALUE( 51.676), SIMDE_FLOAT16_VALUE( - 89.351) } }, { SIMDE_FLOAT16_VALUE( - 85.226), SIMDE_FLOAT16_VALUE( 68.050), SIMDE_FLOAT16_VALUE( - 79.246), SIMDE_FLOAT16_VALUE( - 6.999), SIMDE_FLOAT16_VALUE( - 57.697), SIMDE_FLOAT16_VALUE( - 37.357), SIMDE_FLOAT16_VALUE( - 77.997), SIMDE_FLOAT16_VALUE( - 49.541), SIMDE_FLOAT16_VALUE( - 97.845), SIMDE_FLOAT16_VALUE( - 58.594), SIMDE_FLOAT16_VALUE( 49.242), SIMDE_FLOAT16_VALUE( 38.316), SIMDE_FLOAT16_VALUE( - 4.874), SIMDE_FLOAT16_VALUE( 31.136), SIMDE_FLOAT16_VALUE( 51.676), SIMDE_FLOAT16_VALUE( - 89.351) } }, { { { SIMDE_FLOAT16_VALUE( - 30.265), SIMDE_FLOAT16_VALUE( - 14.175), SIMDE_FLOAT16_VALUE( 36.709), SIMDE_FLOAT16_VALUE( 19.621) }, { SIMDE_FLOAT16_VALUE( 43.887), SIMDE_FLOAT16_VALUE( - 72.313), SIMDE_FLOAT16_VALUE( 75.465), SIMDE_FLOAT16_VALUE( - 60.500) }, { SIMDE_FLOAT16_VALUE( - 4.007), SIMDE_FLOAT16_VALUE( 97.670), SIMDE_FLOAT16_VALUE( - 48.236), SIMDE_FLOAT16_VALUE( 41.558) }, { SIMDE_FLOAT16_VALUE( - 87.828), SIMDE_FLOAT16_VALUE( 55.865), SIMDE_FLOAT16_VALUE( 40.049), SIMDE_FLOAT16_VALUE( - 99.926) } }, { SIMDE_FLOAT16_VALUE( - 30.265), SIMDE_FLOAT16_VALUE( - 14.175), SIMDE_FLOAT16_VALUE( 36.709), SIMDE_FLOAT16_VALUE( 19.621), SIMDE_FLOAT16_VALUE( 43.887), SIMDE_FLOAT16_VALUE( - 72.313), SIMDE_FLOAT16_VALUE( 75.465), SIMDE_FLOAT16_VALUE( - 60.500), SIMDE_FLOAT16_VALUE( - 4.007), SIMDE_FLOAT16_VALUE( 97.670), SIMDE_FLOAT16_VALUE( - 48.236), SIMDE_FLOAT16_VALUE( 41.558), SIMDE_FLOAT16_VALUE( - 87.828), SIMDE_FLOAT16_VALUE( 55.865), SIMDE_FLOAT16_VALUE( 40.049), SIMDE_FLOAT16_VALUE( - 99.926) } }, { { { SIMDE_FLOAT16_VALUE( - 44.272), SIMDE_FLOAT16_VALUE( 10.085), SIMDE_FLOAT16_VALUE( - 12.450), SIMDE_FLOAT16_VALUE( 58.234) }, { SIMDE_FLOAT16_VALUE( - 92.323), SIMDE_FLOAT16_VALUE( - 72.811), SIMDE_FLOAT16_VALUE( - 75.942), SIMDE_FLOAT16_VALUE( - 33.709) }, { SIMDE_FLOAT16_VALUE( - 54.556), SIMDE_FLOAT16_VALUE( - 96.713), SIMDE_FLOAT16_VALUE( - 44.482), SIMDE_FLOAT16_VALUE( 86.965) }, { SIMDE_FLOAT16_VALUE( 91.324), SIMDE_FLOAT16_VALUE( - 40.202), SIMDE_FLOAT16_VALUE( - 14.814), SIMDE_FLOAT16_VALUE( 88.549) } }, { SIMDE_FLOAT16_VALUE( - 44.272), SIMDE_FLOAT16_VALUE( 10.085), SIMDE_FLOAT16_VALUE( - 12.450), SIMDE_FLOAT16_VALUE( 58.234), SIMDE_FLOAT16_VALUE( - 92.323), SIMDE_FLOAT16_VALUE( - 72.811), SIMDE_FLOAT16_VALUE( - 75.942), SIMDE_FLOAT16_VALUE( - 33.709), SIMDE_FLOAT16_VALUE( - 54.556), SIMDE_FLOAT16_VALUE( - 96.713), SIMDE_FLOAT16_VALUE( - 44.482), SIMDE_FLOAT16_VALUE( 86.965), SIMDE_FLOAT16_VALUE( 91.324), SIMDE_FLOAT16_VALUE( - 40.202), SIMDE_FLOAT16_VALUE( - 14.814), SIMDE_FLOAT16_VALUE( 88.549) } }, { { { SIMDE_FLOAT16_VALUE( 2.562), SIMDE_FLOAT16_VALUE( - 38.287), SIMDE_FLOAT16_VALUE( - 35.816), SIMDE_FLOAT16_VALUE( 15.466) }, { SIMDE_FLOAT16_VALUE( 18.376), SIMDE_FLOAT16_VALUE( - 90.001), SIMDE_FLOAT16_VALUE( 64.324), SIMDE_FLOAT16_VALUE( - 33.166) }, { SIMDE_FLOAT16_VALUE( - 69.347), SIMDE_FLOAT16_VALUE( 26.212), SIMDE_FLOAT16_VALUE( - 90.466), SIMDE_FLOAT16_VALUE( - 27.484) }, { SIMDE_FLOAT16_VALUE( - 55.925), SIMDE_FLOAT16_VALUE( - 34.864), SIMDE_FLOAT16_VALUE( - 97.656), SIMDE_FLOAT16_VALUE( - 7.985) } }, { SIMDE_FLOAT16_VALUE( 2.562), SIMDE_FLOAT16_VALUE( - 38.287), SIMDE_FLOAT16_VALUE( - 35.816), SIMDE_FLOAT16_VALUE( 15.466), SIMDE_FLOAT16_VALUE( 18.376), SIMDE_FLOAT16_VALUE( - 90.001), SIMDE_FLOAT16_VALUE( 64.324), SIMDE_FLOAT16_VALUE( - 33.166), SIMDE_FLOAT16_VALUE( - 69.347), SIMDE_FLOAT16_VALUE( 26.212), SIMDE_FLOAT16_VALUE( - 90.466), SIMDE_FLOAT16_VALUE( - 27.484), SIMDE_FLOAT16_VALUE( - 55.925), SIMDE_FLOAT16_VALUE( - 34.864), SIMDE_FLOAT16_VALUE( - 97.656), SIMDE_FLOAT16_VALUE( - 7.985) } }, { { { SIMDE_FLOAT16_VALUE( 52.345), SIMDE_FLOAT16_VALUE( - 67.483), SIMDE_FLOAT16_VALUE( 35.701), SIMDE_FLOAT16_VALUE( 91.753) }, { SIMDE_FLOAT16_VALUE( 19.358), SIMDE_FLOAT16_VALUE( - 88.690), SIMDE_FLOAT16_VALUE( 47.635), SIMDE_FLOAT16_VALUE( 8.845) }, { SIMDE_FLOAT16_VALUE( - 20.974), SIMDE_FLOAT16_VALUE( 4.303), SIMDE_FLOAT16_VALUE( - 69.975), SIMDE_FLOAT16_VALUE( - 29.454) }, { SIMDE_FLOAT16_VALUE( 18.539), SIMDE_FLOAT16_VALUE( 11.611), SIMDE_FLOAT16_VALUE( - 30.865), SIMDE_FLOAT16_VALUE( 45.777) } }, { SIMDE_FLOAT16_VALUE( 52.345), SIMDE_FLOAT16_VALUE( - 67.483), SIMDE_FLOAT16_VALUE( 35.701), SIMDE_FLOAT16_VALUE( 91.753), SIMDE_FLOAT16_VALUE( 19.358), SIMDE_FLOAT16_VALUE( - 88.690), SIMDE_FLOAT16_VALUE( 47.635), SIMDE_FLOAT16_VALUE( 8.845), SIMDE_FLOAT16_VALUE( - 20.974), SIMDE_FLOAT16_VALUE( 4.303), SIMDE_FLOAT16_VALUE( - 69.975), SIMDE_FLOAT16_VALUE( - 29.454), SIMDE_FLOAT16_VALUE( 18.539), SIMDE_FLOAT16_VALUE( 11.611), SIMDE_FLOAT16_VALUE( - 30.865), SIMDE_FLOAT16_VALUE( 45.777) } }, { { { SIMDE_FLOAT16_VALUE( - 6.544), SIMDE_FLOAT16_VALUE( 72.545), SIMDE_FLOAT16_VALUE( - 38.100), SIMDE_FLOAT16_VALUE( 66.147) }, { SIMDE_FLOAT16_VALUE( - 39.990), SIMDE_FLOAT16_VALUE( 59.395), SIMDE_FLOAT16_VALUE( 58.133), SIMDE_FLOAT16_VALUE( 62.227) }, { SIMDE_FLOAT16_VALUE( 17.801), SIMDE_FLOAT16_VALUE( 50.002), SIMDE_FLOAT16_VALUE( 92.224), SIMDE_FLOAT16_VALUE( - 44.924) }, { SIMDE_FLOAT16_VALUE( 11.046), SIMDE_FLOAT16_VALUE( 54.927), SIMDE_FLOAT16_VALUE( - 65.414), SIMDE_FLOAT16_VALUE( - 73.599) } }, { SIMDE_FLOAT16_VALUE( - 6.544), SIMDE_FLOAT16_VALUE( 72.545), SIMDE_FLOAT16_VALUE( - 38.100), SIMDE_FLOAT16_VALUE( 66.147), SIMDE_FLOAT16_VALUE( - 39.990), SIMDE_FLOAT16_VALUE( 59.395), SIMDE_FLOAT16_VALUE( 58.133), SIMDE_FLOAT16_VALUE( 62.227), SIMDE_FLOAT16_VALUE( 17.801), SIMDE_FLOAT16_VALUE( 50.002), SIMDE_FLOAT16_VALUE( 92.224), SIMDE_FLOAT16_VALUE( - 44.924), SIMDE_FLOAT16_VALUE( 11.046), SIMDE_FLOAT16_VALUE( 54.927), SIMDE_FLOAT16_VALUE( - 65.414), SIMDE_FLOAT16_VALUE( - 73.599) } }, { { { SIMDE_FLOAT16_VALUE( - 96.039), SIMDE_FLOAT16_VALUE( 20.111), SIMDE_FLOAT16_VALUE( - 49.906), SIMDE_FLOAT16_VALUE( - 73.928) }, { SIMDE_FLOAT16_VALUE( 70.164), SIMDE_FLOAT16_VALUE( 52.349), SIMDE_FLOAT16_VALUE( 46.465), SIMDE_FLOAT16_VALUE( 59.387) }, { SIMDE_FLOAT16_VALUE( - 74.522), SIMDE_FLOAT16_VALUE( - 64.090), SIMDE_FLOAT16_VALUE( - 64.099), SIMDE_FLOAT16_VALUE( 19.591) }, { SIMDE_FLOAT16_VALUE( 39.551), SIMDE_FLOAT16_VALUE( - 75.560), SIMDE_FLOAT16_VALUE( - 12.722), SIMDE_FLOAT16_VALUE( - 45.531) } }, { SIMDE_FLOAT16_VALUE( - 96.039), SIMDE_FLOAT16_VALUE( 20.111), SIMDE_FLOAT16_VALUE( - 49.906), SIMDE_FLOAT16_VALUE( - 73.928), SIMDE_FLOAT16_VALUE( 70.164), SIMDE_FLOAT16_VALUE( 52.349), SIMDE_FLOAT16_VALUE( 46.465), SIMDE_FLOAT16_VALUE( 59.387), SIMDE_FLOAT16_VALUE( - 74.522), SIMDE_FLOAT16_VALUE( - 64.090), SIMDE_FLOAT16_VALUE( - 64.099), SIMDE_FLOAT16_VALUE( 19.591), SIMDE_FLOAT16_VALUE( 39.551), SIMDE_FLOAT16_VALUE( - 75.560), SIMDE_FLOAT16_VALUE( - 12.722), SIMDE_FLOAT16_VALUE( - 45.531) } }, }; for (size_t i = 0; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) { simde_float16x4x4_t val = {{ simde_vld1_f16(test_vec[i].val[0]), simde_vld1_f16(test_vec[i].val[1]), simde_vld1_f16(test_vec[i].val[2]), simde_vld1_f16(test_vec[i].val[3]), }}; simde_float16_t r_[16]; simde_vst1_f16_x4(r_, val); simde_assert_equal_i(0, simde_memcmp(r_, test_vec[i].r, sizeof(test_vec[i].r))); } return 0; #else fputc('\n', stdout); for (int i = 0 ; i < 8 ; i++) { simde_float16x4_t val[4] = simde_test_arm_neon_random_f16x4(-100.0f, 100.0f); simde_float16x16_t r = simde_vst1_f16_x4(val[4]); simde_test_arm_neon_write_f16x4(2, val[4], SIMDE_TEST_VEC_POS_FIRST); simde_test_arm_neon_write_f16x16(2, r, SIMDE_TEST_VEC_POS_LAST); } return 1; #endif } static int test_simde_vst1_f32_x4 (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const struct { simde_float32 r[4][2]; simde_float32 a[8]; } test_vec[] = { { { { SIMDE_FLOAT32_C( -888.87), SIMDE_FLOAT32_C( 708.47) }, { SIMDE_FLOAT32_C( -777.85), SIMDE_FLOAT32_C( -799.91) }, { SIMDE_FLOAT32_C( 264.52), SIMDE_FLOAT32_C( -980.05) }, { SIMDE_FLOAT32_C( 823.07), SIMDE_FLOAT32_C( -578.13) } }, { SIMDE_FLOAT32_C( -888.87), SIMDE_FLOAT32_C( 708.47), SIMDE_FLOAT32_C( -777.85), SIMDE_FLOAT32_C( -799.91), SIMDE_FLOAT32_C( 264.52), SIMDE_FLOAT32_C( -980.05), SIMDE_FLOAT32_C( 823.07), SIMDE_FLOAT32_C( -578.13) } }, { { { SIMDE_FLOAT32_C( -306.04), SIMDE_FLOAT32_C( 710.58) }, { SIMDE_FLOAT32_C( 931.81), SIMDE_FLOAT32_C( -975.48) }, { SIMDE_FLOAT32_C( -597.35), SIMDE_FLOAT32_C( -797.34) }, { SIMDE_FLOAT32_C( -552.00), SIMDE_FLOAT32_C( 948.97) } }, { SIMDE_FLOAT32_C( -306.04), SIMDE_FLOAT32_C( 710.58), SIMDE_FLOAT32_C( 931.81), SIMDE_FLOAT32_C( -975.48), SIMDE_FLOAT32_C( -597.35), SIMDE_FLOAT32_C( -797.34), SIMDE_FLOAT32_C( -552.00), SIMDE_FLOAT32_C( 948.97) } }, { { { SIMDE_FLOAT32_C( 491.44), SIMDE_FLOAT32_C( 902.32) }, { SIMDE_FLOAT32_C( 651.63), SIMDE_FLOAT32_C( -87.23) }, { SIMDE_FLOAT32_C( -496.24), SIMDE_FLOAT32_C( -468.31) }, { SIMDE_FLOAT32_C( -590.91), SIMDE_FLOAT32_C( 295.14) } }, { SIMDE_FLOAT32_C( 491.44), SIMDE_FLOAT32_C( 902.32), SIMDE_FLOAT32_C( 651.63), SIMDE_FLOAT32_C( -87.23), SIMDE_FLOAT32_C( -496.24), SIMDE_FLOAT32_C( -468.31), SIMDE_FLOAT32_C( -590.91), SIMDE_FLOAT32_C( 295.14) } }, { { { SIMDE_FLOAT32_C( -655.57), SIMDE_FLOAT32_C( -620.90) }, { SIMDE_FLOAT32_C( -517.88), SIMDE_FLOAT32_C( -603.98) }, { SIMDE_FLOAT32_C( 181.30), SIMDE_FLOAT32_C( -312.67) }, { SIMDE_FLOAT32_C( 733.21), SIMDE_FLOAT32_C( 292.43) } }, { SIMDE_FLOAT32_C( -655.57), SIMDE_FLOAT32_C( -620.90), SIMDE_FLOAT32_C( -517.88), SIMDE_FLOAT32_C( -603.98), SIMDE_FLOAT32_C( 181.30), SIMDE_FLOAT32_C( -312.67), SIMDE_FLOAT32_C( 733.21), SIMDE_FLOAT32_C( 292.43) } }, { { { SIMDE_FLOAT32_C( -604.20), SIMDE_FLOAT32_C( 955.36) }, { SIMDE_FLOAT32_C( 492.52), SIMDE_FLOAT32_C( 660.31) }, { SIMDE_FLOAT32_C( 975.31), SIMDE_FLOAT32_C( 315.60) }, { SIMDE_FLOAT32_C( -917.81), SIMDE_FLOAT32_C( -330.72) } }, { SIMDE_FLOAT32_C( -604.20), SIMDE_FLOAT32_C( 955.36), SIMDE_FLOAT32_C( 492.52), SIMDE_FLOAT32_C( 660.31), SIMDE_FLOAT32_C( 975.31), SIMDE_FLOAT32_C( 315.60), SIMDE_FLOAT32_C( -917.81), SIMDE_FLOAT32_C( -330.72) } }, { { { SIMDE_FLOAT32_C( 26.18), SIMDE_FLOAT32_C( -986.00) }, { SIMDE_FLOAT32_C( -306.20), SIMDE_FLOAT32_C( 428.83) }, { SIMDE_FLOAT32_C( -783.34), SIMDE_FLOAT32_C( 141.79) }, { SIMDE_FLOAT32_C( 377.80), SIMDE_FLOAT32_C( 708.09) } }, { SIMDE_FLOAT32_C( 26.18), SIMDE_FLOAT32_C( -986.00), SIMDE_FLOAT32_C( -306.20), SIMDE_FLOAT32_C( 428.83), SIMDE_FLOAT32_C( -783.34), SIMDE_FLOAT32_C( 141.79), SIMDE_FLOAT32_C( 377.80), SIMDE_FLOAT32_C( 708.09) } }, { { { SIMDE_FLOAT32_C( 44.11), SIMDE_FLOAT32_C( 29.43) }, { SIMDE_FLOAT32_C( -379.13), SIMDE_FLOAT32_C( 547.87) }, { SIMDE_FLOAT32_C( 561.12), SIMDE_FLOAT32_C( 29.96) }, { SIMDE_FLOAT32_C( -156.99), SIMDE_FLOAT32_C( 905.55) } }, { SIMDE_FLOAT32_C( 44.11), SIMDE_FLOAT32_C( 29.43), SIMDE_FLOAT32_C( -379.13), SIMDE_FLOAT32_C( 547.87), SIMDE_FLOAT32_C( 561.12), SIMDE_FLOAT32_C( 29.96), SIMDE_FLOAT32_C( -156.99), SIMDE_FLOAT32_C( 905.55) } }, { { { SIMDE_FLOAT32_C( 409.06), SIMDE_FLOAT32_C( 325.12) }, { SIMDE_FLOAT32_C( -698.43), SIMDE_FLOAT32_C( -409.64) }, { SIMDE_FLOAT32_C( -987.55), SIMDE_FLOAT32_C( -965.21) }, { SIMDE_FLOAT32_C( 882.79), SIMDE_FLOAT32_C( -591.76) } }, { SIMDE_FLOAT32_C( 409.06), SIMDE_FLOAT32_C( 325.12), SIMDE_FLOAT32_C( -698.43), SIMDE_FLOAT32_C( -409.64), SIMDE_FLOAT32_C( -987.55), SIMDE_FLOAT32_C( -965.21), SIMDE_FLOAT32_C( 882.79), SIMDE_FLOAT32_C( -591.76) } }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_float32x2x4_t r_ = { { simde_vld1_f32(test_vec[i].r[0]), simde_vld1_f32(test_vec[i].r[1]), simde_vld1_f32(test_vec[i].r[2]), simde_vld1_f32(test_vec[i].r[3]) } }; SIMDE_ALIGN_TO_16 simde_float32 a_[8]; simde_vst1_f32_x4(a_, r_); simde_assert_equal_i(0, simde_memcmp(a_, test_vec[i].a, sizeof(test_vec[i].a))); } return 0; #else for (int i = 0 ; i < 8 ; i++) { simde_float32x2_t a = simde_test_arm_neon_random_f32x2(-1000.0f, 1000.0f); simde_float32x2_t b = simde_test_arm_neon_random_f32x2(-1000.0f, 1000.0f); simde_float32x2_t c = simde_test_arm_neon_random_f32x2(-1000.0f, 1000.0f); simde_float32x2_t d = simde_test_arm_neon_random_f32x2(-1000.0f, 1000.0f); simde_float32x2x4_t e = {{a, b, c, d}}; simde_test_arm_neon_write_f32x2x4(2, e, SIMDE_TEST_VEC_POS_FIRST); simde_float32 buf[8]; simde_vst1_f32_x4(buf, e); simde_test_codegen_write_vf32(2, sizeof(buf) / sizeof(buf[0]), buf, SIMDE_TEST_VEC_POS_LAST); } return 1; #endif } static int test_simde_vst1_f64_x4 (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const struct { simde_float64 r[4][1]; simde_float64 a[4]; } test_vec[] = { { { { SIMDE_FLOAT64_C( 990.15) }, { SIMDE_FLOAT64_C( 375.32) }, { SIMDE_FLOAT64_C( -931.44) }, { SIMDE_FLOAT64_C( 965.47) } }, { SIMDE_FLOAT64_C( 990.15), SIMDE_FLOAT64_C( 375.32), SIMDE_FLOAT64_C( -931.44), SIMDE_FLOAT64_C( 965.47) } }, { { { SIMDE_FLOAT64_C( -309.09) }, { SIMDE_FLOAT64_C( -849.25) }, { SIMDE_FLOAT64_C( -365.26) }, { SIMDE_FLOAT64_C( 717.09) } }, { SIMDE_FLOAT64_C( -309.09), SIMDE_FLOAT64_C( -849.25), SIMDE_FLOAT64_C( -365.26), SIMDE_FLOAT64_C( 717.09) } }, { { { SIMDE_FLOAT64_C( -835.25) }, { SIMDE_FLOAT64_C( 328.54) }, { SIMDE_FLOAT64_C( 145.92) }, { SIMDE_FLOAT64_C( -618.59) } }, { SIMDE_FLOAT64_C( -835.25), SIMDE_FLOAT64_C( 328.54), SIMDE_FLOAT64_C( 145.92), SIMDE_FLOAT64_C( -618.59) } }, { { { SIMDE_FLOAT64_C( -529.67) }, { SIMDE_FLOAT64_C( -476.28) }, { SIMDE_FLOAT64_C( -910.50) }, { SIMDE_FLOAT64_C( 514.44) } }, { SIMDE_FLOAT64_C( -529.67), SIMDE_FLOAT64_C( -476.28), SIMDE_FLOAT64_C( -910.50), SIMDE_FLOAT64_C( 514.44) } }, { { { SIMDE_FLOAT64_C( 553.15) }, { SIMDE_FLOAT64_C( -289.63) }, { SIMDE_FLOAT64_C( 62.31) }, { SIMDE_FLOAT64_C( 114.28) } }, { SIMDE_FLOAT64_C( 553.15), SIMDE_FLOAT64_C( -289.63), SIMDE_FLOAT64_C( 62.31), SIMDE_FLOAT64_C( 114.28) } }, { { { SIMDE_FLOAT64_C( 740.34) }, { SIMDE_FLOAT64_C( 905.32) }, { SIMDE_FLOAT64_C( 19.83) }, { SIMDE_FLOAT64_C( 149.40) } }, { SIMDE_FLOAT64_C( 740.34), SIMDE_FLOAT64_C( 905.32), SIMDE_FLOAT64_C( 19.83), SIMDE_FLOAT64_C( 149.40) } }, { { { SIMDE_FLOAT64_C( 230.44) }, { SIMDE_FLOAT64_C( 321.40) }, { SIMDE_FLOAT64_C( 739.76) }, { SIMDE_FLOAT64_C( 242.89) } }, { SIMDE_FLOAT64_C( 230.44), SIMDE_FLOAT64_C( 321.40), SIMDE_FLOAT64_C( 739.76), SIMDE_FLOAT64_C( 242.89) } }, { { { SIMDE_FLOAT64_C( 356.19) }, { SIMDE_FLOAT64_C( 622.55) }, { SIMDE_FLOAT64_C( 651.14) }, { SIMDE_FLOAT64_C( 346.34) } }, { SIMDE_FLOAT64_C( 356.19), SIMDE_FLOAT64_C( 622.55), SIMDE_FLOAT64_C( 651.14), SIMDE_FLOAT64_C( 346.34) } }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_float64x1x4_t r_ = { { simde_vld1_f64(test_vec[i].r[0]), simde_vld1_f64(test_vec[i].r[1]), simde_vld1_f64(test_vec[i].r[2]), simde_vld1_f64(test_vec[i].r[3]) } }; SIMDE_ALIGN_TO_16 simde_float64 a_[4]; simde_vst1_f64_x4(a_, r_); simde_assert_equal_i(0, simde_memcmp(a_, test_vec[i].a, sizeof(test_vec[i].a))); } return 0; #else for (int i = 0 ; i < 8 ; i++) { simde_float64x1_t a = simde_test_arm_neon_random_f64x1(-1000.0, 1000.0); simde_float64x1_t b = simde_test_arm_neon_random_f64x1(-1000.0, 1000.0); simde_float64x1_t c = simde_test_arm_neon_random_f64x1(-1000.0, 1000.0); simde_float64x1_t d = simde_test_arm_neon_random_f64x1(-1000.0, 1000.0); simde_float64x1x4_t e = {{a, b, c, d}}; simde_test_arm_neon_write_f64x1x4(2, e, SIMDE_TEST_VEC_POS_FIRST); simde_float64 buf[4]; simde_vst1_f64_x4(buf, e); simde_test_codegen_write_vf64(2, sizeof(buf) / sizeof(buf[0]), buf, SIMDE_TEST_VEC_POS_LAST); } return 1; #endif } static int test_simde_vst1_s8_x4 (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const struct { int8_t r[4][8]; int8_t a[32]; } test_vec[] = { { { { -INT8_C( 60), INT8_C( 53), INT8_C( 119), -INT8_C( 27), -INT8_C( 113), -INT8_C( 14), INT8_C( 22), -INT8_C( 97) }, { INT8_C( 55), INT8_C( 89), -INT8_C( 119), -INT8_C( 114), -INT8_C( 103), INT8_C( 60), -INT8_C( 26), -INT8_C( 100) }, { -INT8_C( 115), -INT8_C( 38), -INT8_C( 93), -INT8_C( 67), INT8_C( 31), INT8_C( 19), INT8_C( 66), INT8_C( 107) }, { -INT8_C( 54), -INT8_C( 94), -INT8_C( 65), INT8_C( 45), INT8_C( 61), -INT8_C( 46), INT8_C( 56), INT8_C( 1) } }, { -INT8_C( 60), INT8_C( 53), INT8_C( 119), -INT8_C( 27), -INT8_C( 113), -INT8_C( 14), INT8_C( 22), -INT8_C( 97), INT8_C( 55), INT8_C( 89), -INT8_C( 119), -INT8_C( 114), -INT8_C( 103), INT8_C( 60), -INT8_C( 26), -INT8_C( 100), -INT8_C( 115), -INT8_C( 38), -INT8_C( 93), -INT8_C( 67), INT8_C( 31), INT8_C( 19), INT8_C( 66), INT8_C( 107), -INT8_C( 54), -INT8_C( 94), -INT8_C( 65), INT8_C( 45), INT8_C( 61), -INT8_C( 46), INT8_C( 56), INT8_C( 1) } }, { { { INT8_C( 7), -INT8_C( 80), -INT8_C( 26), -INT8_C( 105), -INT8_C( 94), -INT8_C( 3), INT8_C( 54), -INT8_C( 38) }, { INT8_C( 86), -INT8_C( 65), INT8_C( 104), -INT8_C( 17), -INT8_C( 5), INT8_C( 78), -INT8_C( 117), -INT8_C( 120) }, { INT8_C( 40), INT8_C( 46), INT8_C( 69), INT8_C( 71), INT8_C( 66), -INT8_C( 121), -INT8_C( 77), INT8_C( 12) }, { INT8_C( 42), INT8_C( 114), INT8_C( 58), INT8_C( 103), INT8_C( 68), INT8_C( 114), INT8_C( 104), INT8_C( 75) } }, { INT8_C( 7), -INT8_C( 80), -INT8_C( 26), -INT8_C( 105), -INT8_C( 94), -INT8_C( 3), INT8_C( 54), -INT8_C( 38), INT8_C( 86), -INT8_C( 65), INT8_C( 104), -INT8_C( 17), -INT8_C( 5), INT8_C( 78), -INT8_C( 117), -INT8_C( 120), INT8_C( 40), INT8_C( 46), INT8_C( 69), INT8_C( 71), INT8_C( 66), -INT8_C( 121), -INT8_C( 77), INT8_C( 12), INT8_C( 42), INT8_C( 114), INT8_C( 58), INT8_C( 103), INT8_C( 68), INT8_C( 114), INT8_C( 104), INT8_C( 75) } }, { { { INT8_C( 34), INT8_C( 78), -INT8_C( 30), -INT8_C( 59), INT8_C( 75), INT8_C( 24), -INT8_C( 97), -INT8_C( 95) }, { -INT8_C( 41), INT8_C( 7), -INT8_C( 112), -INT8_C( 46), INT8_C( 85), INT8_C( 28), INT8_C( 90), INT8_C( 125) }, { INT8_C( 74), -INT8_C( 96), -INT8_C( 60), -INT8_C( 116), INT8_C( 39), INT8_C( 119), -INT8_C( 103), INT8_C( 81) }, { -INT8_C( 23), -INT8_C( 45), -INT8_C( 72), INT8_C( 45), INT8_C( 69), INT8_C( 32), INT8_C( 121), INT8_C( 104) } }, { INT8_C( 34), INT8_C( 78), -INT8_C( 30), -INT8_C( 59), INT8_C( 75), INT8_C( 24), -INT8_C( 97), -INT8_C( 95), -INT8_C( 41), INT8_C( 7), -INT8_C( 112), -INT8_C( 46), INT8_C( 85), INT8_C( 28), INT8_C( 90), INT8_C( 125), INT8_C( 74), -INT8_C( 96), -INT8_C( 60), -INT8_C( 116), INT8_C( 39), INT8_C( 119), -INT8_C( 103), INT8_C( 81), -INT8_C( 23), -INT8_C( 45), -INT8_C( 72), INT8_C( 45), INT8_C( 69), INT8_C( 32), INT8_C( 121), INT8_C( 104) } }, { { { INT8_C( 111), INT8_C( 91), INT8_C( 45), -INT8_C( 70), INT8_C( 116), -INT8_C( 52), INT8_C( 92), INT8_C( 75) }, { -INT8_C( 45), -INT8_C( 20), INT8_C( 30), INT8_C( 40), INT8_C( 8), INT8_C( 120), -INT8_C( 91), INT8_C( 83) }, { INT8_C( 24), INT8_C( 105), -INT8_C( 33), INT8_C( 64), -INT8_C( 31), INT8_C( 120), -INT8_C( 111), -INT8_C( 54) }, { INT8_C( 75), INT8_C( 74), -INT8_C( 8), -INT8_C( 111), INT8_C( 106), INT8_C( 113), -INT8_C( 7), -INT8_C( 39) } }, { INT8_C( 111), INT8_C( 91), INT8_C( 45), -INT8_C( 70), INT8_C( 116), -INT8_C( 52), INT8_C( 92), INT8_C( 75), -INT8_C( 45), -INT8_C( 20), INT8_C( 30), INT8_C( 40), INT8_C( 8), INT8_C( 120), -INT8_C( 91), INT8_C( 83), INT8_C( 24), INT8_C( 105), -INT8_C( 33), INT8_C( 64), -INT8_C( 31), INT8_C( 120), -INT8_C( 111), -INT8_C( 54), INT8_C( 75), INT8_C( 74), -INT8_C( 8), -INT8_C( 111), INT8_C( 106), INT8_C( 113), -INT8_C( 7), -INT8_C( 39) } }, { { { -INT8_C( 52), INT8_C( 38), -INT8_C( 108), INT8_C( 64), -INT8_C( 14), -INT8_C( 16), -INT8_C( 116), -INT8_C( 59) }, { -INT8_C( 36), -INT8_C( 86), -INT8_C( 19), -INT8_C( 27), INT8_C( 34), -INT8_C( 110), INT8_C( 56), INT8_C( 59) }, { -INT8_C( 5), INT8_C( 23), INT8_C( 123), -INT8_C( 36), -INT8_C( 112), INT8_C( 12), -INT8_C( 89), -INT8_C( 37) }, { INT8_C( 86), -INT8_C( 97), INT8_C( 108), -INT8_C( 63), INT8_C( 16), INT8_C( 101), -INT8_C( 102), -INT8_C( 36) } }, { -INT8_C( 52), INT8_C( 38), -INT8_C( 108), INT8_C( 64), -INT8_C( 14), -INT8_C( 16), -INT8_C( 116), -INT8_C( 59), -INT8_C( 36), -INT8_C( 86), -INT8_C( 19), -INT8_C( 27), INT8_C( 34), -INT8_C( 110), INT8_C( 56), INT8_C( 59), -INT8_C( 5), INT8_C( 23), INT8_C( 123), -INT8_C( 36), -INT8_C( 112), INT8_C( 12), -INT8_C( 89), -INT8_C( 37), INT8_C( 86), -INT8_C( 97), INT8_C( 108), -INT8_C( 63), INT8_C( 16), INT8_C( 101), -INT8_C( 102), -INT8_C( 36) } }, { { { -INT8_C( 117), INT8_C( 46), INT8_C( 29), INT8_C( 125), INT8_C( 30), -INT8_C( 87), INT8_C( 66), -INT8_C( 5) }, { INT8_C( 83), INT8_C( 47), -INT8_C( 32), INT8_C( 117), -INT8_C( 63), INT8_C( 24), -INT8_C( 80), -INT8_C( 67) }, { INT8_C( 47), INT8_C( 43), -INT8_C( 103), -INT8_C( 65), INT8_C( 56), INT8_C( 64), -INT8_C( 101), -INT8_C( 114) }, { -INT8_C( 33), INT8_C( 7), INT8_C( 79), -INT8_C( 17), INT8_C( 109), -INT8_C( 22), -INT8_C( 52), -INT8_C( 8) } }, { -INT8_C( 117), INT8_C( 46), INT8_C( 29), INT8_C( 125), INT8_C( 30), -INT8_C( 87), INT8_C( 66), -INT8_C( 5), INT8_C( 83), INT8_C( 47), -INT8_C( 32), INT8_C( 117), -INT8_C( 63), INT8_C( 24), -INT8_C( 80), -INT8_C( 67), INT8_C( 47), INT8_C( 43), -INT8_C( 103), -INT8_C( 65), INT8_C( 56), INT8_C( 64), -INT8_C( 101), -INT8_C( 114), -INT8_C( 33), INT8_C( 7), INT8_C( 79), -INT8_C( 17), INT8_C( 109), -INT8_C( 22), -INT8_C( 52), -INT8_C( 8) } }, { { { INT8_C( 24), -INT8_C( 23), INT8_C( 118), INT8_C( 55), -INT8_C( 110), -INT8_C( 72), INT8_C( 50), -INT8_C( 27) }, { -INT8_C( 24), INT8_C( 18), INT8_C( 90), -INT8_C( 87), INT8_C( 42), INT8_C( 11), INT8_C( 102), INT8_C( 89) }, { INT8_C( 54), INT8_C( 0), INT8_C( 25), INT8_C( 110), INT8_C( 64), -INT8_C( 76), -INT8_C( 3), INT8_C( 32) }, { -INT8_C( 69), INT8_C( 76), INT8_C( 15), INT8_C( 40), INT8_C( 54), -INT8_C( 37), INT8_C( 33), INT8_C( 79) } }, { INT8_C( 24), -INT8_C( 23), INT8_C( 118), INT8_C( 55), -INT8_C( 110), -INT8_C( 72), INT8_C( 50), -INT8_C( 27), -INT8_C( 24), INT8_C( 18), INT8_C( 90), -INT8_C( 87), INT8_C( 42), INT8_C( 11), INT8_C( 102), INT8_C( 89), INT8_C( 54), INT8_C( 0), INT8_C( 25), INT8_C( 110), INT8_C( 64), -INT8_C( 76), -INT8_C( 3), INT8_C( 32), -INT8_C( 69), INT8_C( 76), INT8_C( 15), INT8_C( 40), INT8_C( 54), -INT8_C( 37), INT8_C( 33), INT8_C( 79) } }, { { { -INT8_C( 60), -INT8_C( 105), -INT8_C( 122), INT8_C( 86), INT8_C( 79), -INT8_C( 72), INT8_C( 59), INT8_C( 55) }, { -INT8_C( 54), -INT8_C( 106), -INT8_C( 31), -INT8_C( 12), -INT8_C( 95), INT8_C( 71), INT8_C( 77), -INT8_C( 41) }, { INT8_C( 71), INT8_C( 102), INT8_C( 70), -INT8_C( 120), INT8_C( 26), INT8_C( 67), -INT8_C( 88), -INT8_C( 42) }, { -INT8_C( 113), -INT8_C( 73), -INT8_C( 2), -INT8_C( 58), -INT8_C( 109), INT8_C( 31), INT8_C( 21), INT8_C( 87) } }, { -INT8_C( 60), -INT8_C( 105), -INT8_C( 122), INT8_C( 86), INT8_C( 79), -INT8_C( 72), INT8_C( 59), INT8_C( 55), -INT8_C( 54), -INT8_C( 106), -INT8_C( 31), -INT8_C( 12), -INT8_C( 95), INT8_C( 71), INT8_C( 77), -INT8_C( 41), INT8_C( 71), INT8_C( 102), INT8_C( 70), -INT8_C( 120), INT8_C( 26), INT8_C( 67), -INT8_C( 88), -INT8_C( 42), -INT8_C( 113), -INT8_C( 73), -INT8_C( 2), -INT8_C( 58), -INT8_C( 109), INT8_C( 31), INT8_C( 21), INT8_C( 87) } }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_int8x8x4_t r_ = { { simde_vld1_s8(test_vec[i].r[0]), simde_vld1_s8(test_vec[i].r[1]), simde_vld1_s8(test_vec[i].r[2]), simde_vld1_s8(test_vec[i].r[3]) } }; SIMDE_ALIGN_TO_16 int8_t a_[32]; simde_vst1_s8_x4(a_, r_); simde_assert_equal_i(0, simde_memcmp(a_, test_vec[i].a, sizeof(test_vec[i].a))); } return 0; #else for (int i = 0 ; i < 8 ; i++) { simde_int8x8_t a = simde_test_arm_neon_random_i8x8(); simde_int8x8_t b = simde_test_arm_neon_random_i8x8(); simde_int8x8_t c = simde_test_arm_neon_random_i8x8(); simde_int8x8_t d = simde_test_arm_neon_random_i8x8(); simde_int8x8x4_t e = {{a, b, c, d}}; simde_test_arm_neon_write_i8x8x4(2, e, SIMDE_TEST_VEC_POS_FIRST); int8_t buf[32]; simde_vst1_s8_x4(buf, e); simde_test_codegen_write_vi8(2, sizeof(buf) / sizeof(buf[0]), buf, SIMDE_TEST_VEC_POS_LAST); } return 1; #endif } static int test_simde_vst1_s16_x4 (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const struct { int16_t r[4][4]; int16_t a[16]; } test_vec[] = { { { { -INT16_C( 25674), INT16_C( 1710), -INT16_C( 5805), INT16_C( 7485) }, { INT16_C( 7807), INT16_C( 8209), INT16_C( 24166), -INT16_C( 21000) }, { INT16_C( 16069), -INT16_C( 8395), -INT16_C( 8831), INT16_C( 4277) }, { -INT16_C( 19307), INT16_C( 10454), -INT16_C( 5165), -INT16_C( 30081) } }, { -INT16_C( 25674), INT16_C( 1710), -INT16_C( 5805), INT16_C( 7485), INT16_C( 7807), INT16_C( 8209), INT16_C( 24166), -INT16_C( 21000), INT16_C( 16069), -INT16_C( 8395), -INT16_C( 8831), INT16_C( 4277), -INT16_C( 19307), INT16_C( 10454), -INT16_C( 5165), -INT16_C( 30081) } }, { { { INT16_C( 11654), -INT16_C( 9840), -INT16_C( 13033), -INT16_C( 26890) }, { INT16_C( 2028), INT16_C( 21175), -INT16_C( 20634), INT16_C( 11263) }, { INT16_C( 13805), INT16_C( 28170), -INT16_C( 16366), -INT16_C( 22658) }, { INT16_C( 21876), INT16_C( 18383), INT16_C( 20288), -INT16_C( 14383) } }, { INT16_C( 11654), -INT16_C( 9840), -INT16_C( 13033), -INT16_C( 26890), INT16_C( 2028), INT16_C( 21175), -INT16_C( 20634), INT16_C( 11263), INT16_C( 13805), INT16_C( 28170), -INT16_C( 16366), -INT16_C( 22658), INT16_C( 21876), INT16_C( 18383), INT16_C( 20288), -INT16_C( 14383) } }, { { { INT16_C( 24956), -INT16_C( 27744), -INT16_C( 26833), INT16_C( 6954) }, { -INT16_C( 7778), INT16_C( 1133), INT16_C( 27792), INT16_C( 32047) }, { INT16_C( 15009), -INT16_C( 19221), INT16_C( 27130), INT16_C( 28251) }, { INT16_C( 11198), -INT16_C( 75), -INT16_C( 30854), -INT16_C( 2362) } }, { INT16_C( 24956), -INT16_C( 27744), -INT16_C( 26833), INT16_C( 6954), -INT16_C( 7778), INT16_C( 1133), INT16_C( 27792), INT16_C( 32047), INT16_C( 15009), -INT16_C( 19221), INT16_C( 27130), INT16_C( 28251), INT16_C( 11198), -INT16_C( 75), -INT16_C( 30854), -INT16_C( 2362) } }, { { { INT16_C( 26344), INT16_C( 6026), -INT16_C( 19203), -INT16_C( 25550) }, { -INT16_C( 24683), INT16_C( 9632), -INT16_C( 12276), -INT16_C( 21086) }, { -INT16_C( 29430), INT16_C( 1121), -INT16_C( 16906), -INT16_C( 19086) }, { INT16_C( 10216), INT16_C( 25268), INT16_C( 31406), -INT16_C( 26792) } }, { INT16_C( 26344), INT16_C( 6026), -INT16_C( 19203), -INT16_C( 25550), -INT16_C( 24683), INT16_C( 9632), -INT16_C( 12276), -INT16_C( 21086), -INT16_C( 29430), INT16_C( 1121), -INT16_C( 16906), -INT16_C( 19086), INT16_C( 10216), INT16_C( 25268), INT16_C( 31406), -INT16_C( 26792) } }, { { { -INT16_C( 7456), -INT16_C( 8530), -INT16_C( 7786), INT16_C( 11130) }, { INT16_C( 6784), -INT16_C( 29616), -INT16_C( 3350), -INT16_C( 3014) }, { -INT16_C( 25729), INT16_C( 30456), INT16_C( 27224), INT16_C( 16427) }, { -INT16_C( 8302), INT16_C( 16546), -INT16_C( 1191), INT16_C( 14807) } }, { -INT16_C( 7456), -INT16_C( 8530), -INT16_C( 7786), INT16_C( 11130), INT16_C( 6784), -INT16_C( 29616), -INT16_C( 3350), -INT16_C( 3014), -INT16_C( 25729), INT16_C( 30456), INT16_C( 27224), INT16_C( 16427), -INT16_C( 8302), INT16_C( 16546), -INT16_C( 1191), INT16_C( 14807) } }, { { { -INT16_C( 31011), INT16_C( 29719), -INT16_C( 28313), -INT16_C( 6241) }, { -INT16_C( 3924), -INT16_C( 27020), -INT16_C( 20766), INT16_C( 25227) }, { -INT16_C( 31927), -INT16_C( 23848), INT16_C( 1006), -INT16_C( 32542) }, { -INT16_C( 31262), INT16_C( 15296), -INT16_C( 26496), INT16_C( 23924) } }, { -INT16_C( 31011), INT16_C( 29719), -INT16_C( 28313), -INT16_C( 6241), -INT16_C( 3924), -INT16_C( 27020), -INT16_C( 20766), INT16_C( 25227), -INT16_C( 31927), -INT16_C( 23848), INT16_C( 1006), -INT16_C( 32542), -INT16_C( 31262), INT16_C( 15296), -INT16_C( 26496), INT16_C( 23924) } }, { { { -INT16_C( 29666), -INT16_C( 31279), INT16_C( 28957), -INT16_C( 13972) }, { -INT16_C( 8095), INT16_C( 17248), -INT16_C( 5234), -INT16_C( 10075) }, { INT16_C( 32110), INT16_C( 23674), INT16_C( 23680), INT16_C( 25308) }, { -INT16_C( 25119), INT16_C( 24989), INT16_C( 4661), INT16_C( 21439) } }, { -INT16_C( 29666), -INT16_C( 31279), INT16_C( 28957), -INT16_C( 13972), -INT16_C( 8095), INT16_C( 17248), -INT16_C( 5234), -INT16_C( 10075), INT16_C( 32110), INT16_C( 23674), INT16_C( 23680), INT16_C( 25308), -INT16_C( 25119), INT16_C( 24989), INT16_C( 4661), INT16_C( 21439) } }, { { { -INT16_C( 28514), -INT16_C( 17448), INT16_C( 17409), INT16_C( 25221) }, { -INT16_C( 6875), -INT16_C( 19546), INT16_C( 19408), INT16_C( 16011) }, { INT16_C( 1481), INT16_C( 18843), INT16_C( 30562), INT16_C( 17324) }, { INT16_C( 18708), INT16_C( 18853), INT16_C( 25691), -INT16_C( 1636) } }, { -INT16_C( 28514), -INT16_C( 17448), INT16_C( 17409), INT16_C( 25221), -INT16_C( 6875), -INT16_C( 19546), INT16_C( 19408), INT16_C( 16011), INT16_C( 1481), INT16_C( 18843), INT16_C( 30562), INT16_C( 17324), INT16_C( 18708), INT16_C( 18853), INT16_C( 25691), -INT16_C( 1636) } }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_int16x4x4_t r_ = { { simde_vld1_s16(test_vec[i].r[0]), simde_vld1_s16(test_vec[i].r[1]), simde_vld1_s16(test_vec[i].r[2]), simde_vld1_s16(test_vec[i].r[3]) } }; SIMDE_ALIGN_TO_16 int16_t a_[16]; simde_vst1_s16_x4(a_, r_); simde_assert_equal_i(0, simde_memcmp(a_, test_vec[i].a, sizeof(test_vec[i].a))); } return 0; #else for (int i = 0 ; i < 8 ; i++) { simde_int16x4_t a = simde_test_arm_neon_random_i16x4(); simde_int16x4_t b = simde_test_arm_neon_random_i16x4(); simde_int16x4_t c = simde_test_arm_neon_random_i16x4(); simde_int16x4_t d = simde_test_arm_neon_random_i16x4(); simde_int16x4x4_t e = {{a, b, c, d}}; simde_test_arm_neon_write_i16x4x4(2, e, SIMDE_TEST_VEC_POS_FIRST); int16_t buf[16]; simde_vst1_s16_x4(buf, e); simde_test_codegen_write_vi16(2, sizeof(buf) / sizeof(buf[0]), buf, SIMDE_TEST_VEC_POS_LAST); } return 1; #endif } static int test_simde_vst1_s32_x4 (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const struct { int32_t r[4][2]; int32_t a[8]; } test_vec[] = { { { { -INT32_C( 155880204), -INT32_C( 564643143) }, { -INT32_C( 275644897), INT32_C( 321723722) }, { -INT32_C( 2074294238), INT32_C( 1422395456) }, { -INT32_C( 1382126254), -INT32_C( 978896175) } }, { -INT32_C( 155880204), -INT32_C( 564643143), -INT32_C( 275644897), INT32_C( 321723722), -INT32_C( 2074294238), INT32_C( 1422395456), -INT32_C( 1382126254), -INT32_C( 978896175) } }, { { { INT32_C( 1757109423), -INT32_C( 1253698410) }, { INT32_C( 1554306834), INT32_C( 393204212) }, { -INT32_C( 627323750), INT32_C( 640574420) }, { -INT32_C( 1579889456), -INT32_C( 1234732281) } }, { INT32_C( 1757109423), -INT32_C( 1253698410), INT32_C( 1554306834), INT32_C( 393204212), -INT32_C( 627323750), INT32_C( 640574420), -INT32_C( 1579889456), -INT32_C( 1234732281) } }, { { { INT32_C( 1830691543), INT32_C( 1226990646) }, { INT32_C( 816170555), INT32_C( 826742167) }, { -INT32_C( 1257512223), INT32_C( 383531590) }, { INT32_C( 230207494), INT32_C( 46341931) } }, { INT32_C( 1830691543), INT32_C( 1226990646), INT32_C( 816170555), INT32_C( 826742167), -INT32_C( 1257512223), INT32_C( 383531590), INT32_C( 230207494), INT32_C( 46341931) } }, { { { INT32_C( 2020598081), -INT32_C( 2118020795) }, { -INT32_C( 290363817), INT32_C( 1545664635) }, { INT32_C( 538061786), INT32_C( 1815604837) }, { -INT32_C( 914755682), INT32_C( 1338719502) } }, { INT32_C( 2020598081), -INT32_C( 2118020795), -INT32_C( 290363817), INT32_C( 1545664635), INT32_C( 538061786), INT32_C( 1815604837), -INT32_C( 914755682), INT32_C( 1338719502) } }, { { { INT32_C( 1690778142), INT32_C( 585468107) }, { INT32_C( 1779472111), INT32_C( 1757884558) }, { -INT32_C( 1047930532), INT32_C( 1697497287) }, { -INT32_C( 1121015889), INT32_C( 34404836) } }, { INT32_C( 1690778142), INT32_C( 585468107), INT32_C( 1779472111), INT32_C( 1757884558), -INT32_C( 1047930532), INT32_C( 1697497287), -INT32_C( 1121015889), INT32_C( 34404836) } }, { { { -INT32_C( 26815437), INT32_C( 1260407644) }, { INT32_C( 1874211041), -INT32_C( 1109885599) }, { INT32_C( 494821718), -INT32_C( 796742623) }, { INT32_C( 932032595), -INT32_C( 600204887) } }, { -INT32_C( 26815437), INT32_C( 1260407644), INT32_C( 1874211041), -INT32_C( 1109885599), INT32_C( 494821718), -INT32_C( 796742623), INT32_C( 932032595), -INT32_C( 600204887) } }, { { { -INT32_C( 891641747), -INT32_C( 854197525) }, { -INT32_C( 1958950102), -INT32_C( 1639443384) }, { -INT32_C( 1766078603), -INT32_C( 966378125) }, { -INT32_C( 1761741843), -INT32_C( 93178227) } }, { -INT32_C( 891641747), -INT32_C( 854197525), -INT32_C( 1958950102), -INT32_C( 1639443384), -INT32_C( 1766078603), -INT32_C( 966378125), -INT32_C( 1761741843), -INT32_C( 93178227) } }, { { { -INT32_C( 1027322666), INT32_C( 1905252934) }, { -INT32_C( 285422683), INT32_C( 1435256288) }, { INT32_C( 2146191372), INT32_C( 1933922949) }, { -INT32_C( 754367930), INT32_C( 1338866808) } }, { -INT32_C( 1027322666), INT32_C( 1905252934), -INT32_C( 285422683), INT32_C( 1435256288), INT32_C( 2146191372), INT32_C( 1933922949), -INT32_C( 754367930), INT32_C( 1338866808) } }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_int32x2x4_t r_ = { { simde_vld1_s32(test_vec[i].r[0]), simde_vld1_s32(test_vec[i].r[1]), simde_vld1_s32(test_vec[i].r[2]), simde_vld1_s32(test_vec[i].r[3]) } }; SIMDE_ALIGN_TO_16 int32_t a_[8]; simde_vst1_s32_x4(a_, r_); simde_assert_equal_i(0, simde_memcmp(a_, test_vec[i].a, sizeof(test_vec[i].a))); } return 0; #else for (int i = 0 ; i < 8 ; i++) { simde_int32x2_t a = simde_test_arm_neon_random_i32x2(); simde_int32x2_t b = simde_test_arm_neon_random_i32x2(); simde_int32x2_t c = simde_test_arm_neon_random_i32x2(); simde_int32x2_t d = simde_test_arm_neon_random_i32x2(); simde_int32x2x4_t e = {{a, b, c, d}}; simde_test_arm_neon_write_i32x2x4(2, e, SIMDE_TEST_VEC_POS_FIRST); int32_t buf[8]; simde_vst1_s32_x4(buf, e); simde_test_codegen_write_vi32(2, sizeof(buf) / sizeof(buf[0]), buf, SIMDE_TEST_VEC_POS_LAST); } return 1; #endif } static int test_simde_vst1_s64_x4 (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const struct { int64_t r[4][1]; int64_t a[4]; } test_vec[] = { { { { INT64_C( 1261184281633460936) }, { -INT64_C( 3629465062852297621) }, { INT64_C( 2723712263114231252) }, { INT64_C( 1917344123157272275) } }, { INT64_C( 1261184281633460936), -INT64_C( 3629465062852297621), INT64_C( 2723712263114231252), INT64_C( 1917344123157272275) } }, { { { -INT64_C( 5200064047555695528) }, { INT64_C( 3870180195189380390) }, { INT64_C( 7365174927807086897) }, { INT64_C( 5520654430802947633) } }, { -INT64_C( 5200064047555695528), INT64_C( 3870180195189380390), INT64_C( 7365174927807086897), INT64_C( 5520654430802947633) } }, { { { -INT64_C( 7566638429043111943) }, { -INT64_C( 3075620290571665221) }, { INT64_C( 7723140350262763316) }, { INT64_C( 2849525319494197322) } }, { -INT64_C( 7566638429043111943), -INT64_C( 3075620290571665221), INT64_C( 7723140350262763316), INT64_C( 2849525319494197322) } }, { { { INT64_C( 4348905495741700947) }, { INT64_C( 4603709109053216874) }, { INT64_C( 3327937906290968713) }, { -INT64_C( 257840247290979051) } }, { INT64_C( 4348905495741700947), INT64_C( 4603709109053216874), INT64_C( 3327937906290968713), -INT64_C( 257840247290979051) } }, { { { -INT64_C( 6030009554954037101) }, { -INT64_C( 2577011902698051086) }, { -INT64_C( 8180843182068645019) }, { INT64_C( 7967497604580893932) } }, { -INT64_C( 6030009554954037101), -INT64_C( 2577011902698051086), -INT64_C( 8180843182068645019), INT64_C( 7967497604580893932) } }, { { { INT64_C( 6774210351291650580) }, { -INT64_C( 4635163504467526531) }, { INT64_C( 495818284538023131) }, { INT64_C( 337258627198661476) } }, { INT64_C( 6774210351291650580), -INT64_C( 4635163504467526531), INT64_C( 495818284538023131), INT64_C( 337258627198661476) } }, { { { -INT64_C( 9058325420480777856) }, { INT64_C( 1671679046805857561) }, { INT64_C( 2192211482088520267) }, { -INT64_C( 5263850109382293249) } }, { -INT64_C( 9058325420480777856), INT64_C( 1671679046805857561), INT64_C( 2192211482088520267), -INT64_C( 5263850109382293249) } }, { { { -INT64_C( 4268026330833859267) }, { INT64_C( 7126217536348559249) }, { -INT64_C( 7170797556664348509) }, { INT64_C( 2533977268612225597) } }, { -INT64_C( 4268026330833859267), INT64_C( 7126217536348559249), -INT64_C( 7170797556664348509), INT64_C( 2533977268612225597) } }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_int64x1x4_t r_ = { { simde_vld1_s64(test_vec[i].r[0]), simde_vld1_s64(test_vec[i].r[1]), simde_vld1_s64(test_vec[i].r[2]), simde_vld1_s64(test_vec[i].r[3]) } }; SIMDE_ALIGN_TO_16 int64_t a_[4]; simde_vst1_s64_x4(a_, r_); simde_assert_equal_i(0, simde_memcmp(a_, test_vec[i].a, sizeof(test_vec[i].a))); } return 0; #else for (int i = 0 ; i < 8 ; i++) { simde_int64x1_t a = simde_test_arm_neon_random_i64x1(); simde_int64x1_t b = simde_test_arm_neon_random_i64x1(); simde_int64x1_t c = simde_test_arm_neon_random_i64x1(); simde_int64x1_t d = simde_test_arm_neon_random_i64x1(); simde_int64x1x4_t e = {{a, b, c, d}}; simde_test_arm_neon_write_i64x1x4(2, e, SIMDE_TEST_VEC_POS_FIRST); int64_t buf[4]; simde_vst1_s64_x4(buf, e); simde_test_codegen_write_vi64(2, sizeof(buf) / sizeof(buf[0]), buf, SIMDE_TEST_VEC_POS_LAST); } return 1; #endif } static int test_simde_vst1_u8_x4 (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const struct { uint8_t r[4][8]; uint8_t a[32]; } test_vec[] = { { { { UINT8_C(204), UINT8_C(205), UINT8_C(101), UINT8_C(118), UINT8_C(185), UINT8_C( 42), UINT8_C( 58), UINT8_C( 75) }, { UINT8_C( 65), UINT8_C(113), UINT8_C( 25), UINT8_C( 88), UINT8_C(218), UINT8_C(254), UINT8_C(187), UINT8_C(126) }, { UINT8_C( 79), UINT8_C(131), UINT8_C(220), UINT8_C(236), UINT8_C(184), UINT8_C( 88), UINT8_C(136), UINT8_C(246) }, { UINT8_C( 51), UINT8_C( 20), UINT8_C(106), UINT8_C( 25), UINT8_C(146), UINT8_C(148), UINT8_C( 61), UINT8_C( 94) } }, { UINT8_C(204), UINT8_C(205), UINT8_C(101), UINT8_C(118), UINT8_C(185), UINT8_C( 42), UINT8_C( 58), UINT8_C( 75), UINT8_C( 65), UINT8_C(113), UINT8_C( 25), UINT8_C( 88), UINT8_C(218), UINT8_C(254), UINT8_C(187), UINT8_C(126), UINT8_C( 79), UINT8_C(131), UINT8_C(220), UINT8_C(236), UINT8_C(184), UINT8_C( 88), UINT8_C(136), UINT8_C(246), UINT8_C( 51), UINT8_C( 20), UINT8_C(106), UINT8_C( 25), UINT8_C(146), UINT8_C(148), UINT8_C( 61), UINT8_C( 94) } }, { { { UINT8_C( 97), UINT8_C(162), UINT8_C(213), UINT8_C( 27), UINT8_C(204), UINT8_C( 15), UINT8_C(102), UINT8_C( 14) }, { UINT8_C(129), UINT8_C(127), UINT8_C(102), UINT8_C( 91), UINT8_C(125), UINT8_C( 33), UINT8_C(217), UINT8_C(204) }, { UINT8_C(165), UINT8_C(181), UINT8_C(184), UINT8_C( 93), UINT8_C( 14), UINT8_C( 65), UINT8_C( 83), UINT8_C( 65) }, { UINT8_C( 85), UINT8_C(189), UINT8_C( 90), UINT8_C(231), UINT8_C( 82), UINT8_C(151), UINT8_C( 70), UINT8_C(179) } }, { UINT8_C( 97), UINT8_C(162), UINT8_C(213), UINT8_C( 27), UINT8_C(204), UINT8_C( 15), UINT8_C(102), UINT8_C( 14), UINT8_C(129), UINT8_C(127), UINT8_C(102), UINT8_C( 91), UINT8_C(125), UINT8_C( 33), UINT8_C(217), UINT8_C(204), UINT8_C(165), UINT8_C(181), UINT8_C(184), UINT8_C( 93), UINT8_C( 14), UINT8_C( 65), UINT8_C( 83), UINT8_C( 65), UINT8_C( 85), UINT8_C(189), UINT8_C( 90), UINT8_C(231), UINT8_C( 82), UINT8_C(151), UINT8_C( 70), UINT8_C(179) } }, { { { UINT8_C( 58), UINT8_C( 27), UINT8_C(206), UINT8_C( 6), UINT8_C( 42), UINT8_C( 52), UINT8_C( 20), UINT8_C(171) }, { UINT8_C(179), UINT8_C(123), UINT8_C( 7), UINT8_C( 49), UINT8_C(156), UINT8_C(224), UINT8_C(253), UINT8_C( 65) }, { UINT8_C(150), UINT8_C(182), UINT8_C(159), UINT8_C(164), UINT8_C(247), UINT8_C(242), UINT8_C(229), UINT8_C( 76) }, { UINT8_C(176), UINT8_C( 63), UINT8_C( 51), UINT8_C( 2), UINT8_C(215), UINT8_C(121), UINT8_C(181), UINT8_C( 17) } }, { UINT8_C( 58), UINT8_C( 27), UINT8_C(206), UINT8_C( 6), UINT8_C( 42), UINT8_C( 52), UINT8_C( 20), UINT8_C(171), UINT8_C(179), UINT8_C(123), UINT8_C( 7), UINT8_C( 49), UINT8_C(156), UINT8_C(224), UINT8_C(253), UINT8_C( 65), UINT8_C(150), UINT8_C(182), UINT8_C(159), UINT8_C(164), UINT8_C(247), UINT8_C(242), UINT8_C(229), UINT8_C( 76), UINT8_C(176), UINT8_C( 63), UINT8_C( 51), UINT8_C( 2), UINT8_C(215), UINT8_C(121), UINT8_C(181), UINT8_C( 17) } }, { { { UINT8_C(148), UINT8_C(132), UINT8_C( 23), UINT8_C(191), UINT8_C(184), UINT8_C( 44), UINT8_C(106), UINT8_C(108) }, { UINT8_C(167), UINT8_C(113), UINT8_C(157), UINT8_C( 67), UINT8_C( 82), UINT8_C(154), UINT8_C(133), UINT8_C(232) }, { UINT8_C( 80), UINT8_C( 36), UINT8_C(140), UINT8_C( 71), UINT8_C( 22), UINT8_C(113), UINT8_C(147), UINT8_C(198) }, { UINT8_C(176), UINT8_C(199), UINT8_C(200), UINT8_C(135), UINT8_C( 64), UINT8_C(126), UINT8_C(152), UINT8_C(213) } }, { UINT8_C(148), UINT8_C(132), UINT8_C( 23), UINT8_C(191), UINT8_C(184), UINT8_C( 44), UINT8_C(106), UINT8_C(108), UINT8_C(167), UINT8_C(113), UINT8_C(157), UINT8_C( 67), UINT8_C( 82), UINT8_C(154), UINT8_C(133), UINT8_C(232), UINT8_C( 80), UINT8_C( 36), UINT8_C(140), UINT8_C( 71), UINT8_C( 22), UINT8_C(113), UINT8_C(147), UINT8_C(198), UINT8_C(176), UINT8_C(199), UINT8_C(200), UINT8_C(135), UINT8_C( 64), UINT8_C(126), UINT8_C(152), UINT8_C(213) } }, { { { UINT8_C( 2), UINT8_C(176), UINT8_C(148), UINT8_C(186), UINT8_C(220), UINT8_C(254), UINT8_C( 38), UINT8_C(131) }, { UINT8_C(112), UINT8_C(195), UINT8_C(198), UINT8_C(194), UINT8_C( 94), UINT8_C( 75), UINT8_C(170), UINT8_C(174) }, { UINT8_C(111), UINT8_C( 54), UINT8_C(246), UINT8_C(134), UINT8_C(167), UINT8_C(137), UINT8_C( 76), UINT8_C( 87) }, { UINT8_C( 80), UINT8_C( 21), UINT8_C(223), UINT8_C(145), UINT8_C(147), UINT8_C(119), UINT8_C(102), UINT8_C(149) } }, { UINT8_C( 2), UINT8_C(176), UINT8_C(148), UINT8_C(186), UINT8_C(220), UINT8_C(254), UINT8_C( 38), UINT8_C(131), UINT8_C(112), UINT8_C(195), UINT8_C(198), UINT8_C(194), UINT8_C( 94), UINT8_C( 75), UINT8_C(170), UINT8_C(174), UINT8_C(111), UINT8_C( 54), UINT8_C(246), UINT8_C(134), UINT8_C(167), UINT8_C(137), UINT8_C( 76), UINT8_C( 87), UINT8_C( 80), UINT8_C( 21), UINT8_C(223), UINT8_C(145), UINT8_C(147), UINT8_C(119), UINT8_C(102), UINT8_C(149) } }, { { { UINT8_C( 39), UINT8_C(250), UINT8_C( 79), UINT8_C( 3), UINT8_C(248), UINT8_C(118), UINT8_C(134), UINT8_C(104) }, { UINT8_C( 57), UINT8_C( 77), UINT8_C( 42), UINT8_C(151), UINT8_C(152), UINT8_C(212), UINT8_C( 70), UINT8_C( 8) }, { UINT8_C( 10), UINT8_C( 60), UINT8_C(142), UINT8_C(177), UINT8_C(197), UINT8_C(218), UINT8_C( 9), UINT8_C( 22) }, { UINT8_C(239), UINT8_C(232), UINT8_C(167), UINT8_C(130), UINT8_C( 95), UINT8_C( 13), UINT8_C( 23), UINT8_C(135) } }, { UINT8_C( 39), UINT8_C(250), UINT8_C( 79), UINT8_C( 3), UINT8_C(248), UINT8_C(118), UINT8_C(134), UINT8_C(104), UINT8_C( 57), UINT8_C( 77), UINT8_C( 42), UINT8_C(151), UINT8_C(152), UINT8_C(212), UINT8_C( 70), UINT8_C( 8), UINT8_C( 10), UINT8_C( 60), UINT8_C(142), UINT8_C(177), UINT8_C(197), UINT8_C(218), UINT8_C( 9), UINT8_C( 22), UINT8_C(239), UINT8_C(232), UINT8_C(167), UINT8_C(130), UINT8_C( 95), UINT8_C( 13), UINT8_C( 23), UINT8_C(135) } }, { { { UINT8_C( 7), UINT8_C(103), UINT8_C(138), UINT8_MAX, UINT8_C(221), UINT8_C( 17), UINT8_C(104), UINT8_C( 22) }, { UINT8_C( 94), UINT8_C(146), UINT8_C(174), UINT8_C(246), UINT8_C(103), UINT8_C(244), UINT8_C(254), UINT8_C(113) }, { UINT8_C( 48), UINT8_C(140), UINT8_C( 35), UINT8_C(245), UINT8_C(103), UINT8_C( 44), UINT8_C( 11), UINT8_C( 86) }, { UINT8_C( 20), UINT8_C(178), UINT8_C(217), UINT8_C(115), UINT8_C(191), UINT8_C(240), UINT8_C(250), UINT8_C(198) } }, { UINT8_C( 7), UINT8_C(103), UINT8_C(138), UINT8_MAX, UINT8_C(221), UINT8_C( 17), UINT8_C(104), UINT8_C( 22), UINT8_C( 94), UINT8_C(146), UINT8_C(174), UINT8_C(246), UINT8_C(103), UINT8_C(244), UINT8_C(254), UINT8_C(113), UINT8_C( 48), UINT8_C(140), UINT8_C( 35), UINT8_C(245), UINT8_C(103), UINT8_C( 44), UINT8_C( 11), UINT8_C( 86), UINT8_C( 20), UINT8_C(178), UINT8_C(217), UINT8_C(115), UINT8_C(191), UINT8_C(240), UINT8_C(250), UINT8_C(198) } }, { { { UINT8_C( 87), UINT8_C(133), UINT8_C(198), UINT8_C( 52), UINT8_C(150), UINT8_C( 46), UINT8_C( 75), UINT8_C(244) }, { UINT8_C(192), UINT8_C(249), UINT8_C(234), UINT8_C( 39), UINT8_C(237), UINT8_C(233), UINT8_C(153), UINT8_C( 29) }, { UINT8_C(117), UINT8_C(188), UINT8_C( 18), UINT8_C(220), UINT8_C(232), UINT8_C( 30), UINT8_C( 51), UINT8_C(252) }, { UINT8_C(208), UINT8_C( 12), UINT8_C(111), UINT8_C(144), UINT8_C(252), UINT8_C(106), UINT8_C( 86), UINT8_C( 84) } }, { UINT8_C( 87), UINT8_C(133), UINT8_C(198), UINT8_C( 52), UINT8_C(150), UINT8_C( 46), UINT8_C( 75), UINT8_C(244), UINT8_C(192), UINT8_C(249), UINT8_C(234), UINT8_C( 39), UINT8_C(237), UINT8_C(233), UINT8_C(153), UINT8_C( 29), UINT8_C(117), UINT8_C(188), UINT8_C( 18), UINT8_C(220), UINT8_C(232), UINT8_C( 30), UINT8_C( 51), UINT8_C(252), UINT8_C(208), UINT8_C( 12), UINT8_C(111), UINT8_C(144), UINT8_C(252), UINT8_C(106), UINT8_C( 86), UINT8_C( 84) } }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_uint8x8x4_t r_ = { { simde_vld1_u8(test_vec[i].r[0]), simde_vld1_u8(test_vec[i].r[1]), simde_vld1_u8(test_vec[i].r[2]), simde_vld1_u8(test_vec[i].r[3]) } }; SIMDE_ALIGN_TO_16 uint8_t a_[32]; simde_vst1_u8_x4(a_, r_); simde_assert_equal_i(0, simde_memcmp(a_, test_vec[i].a, sizeof(test_vec[i].a))); } return 0; #else for (int i = 0 ; i < 8 ; i++) { simde_uint8x8_t a = simde_test_arm_neon_random_u8x8(); simde_uint8x8_t b = simde_test_arm_neon_random_u8x8(); simde_uint8x8_t c = simde_test_arm_neon_random_u8x8(); simde_uint8x8_t d = simde_test_arm_neon_random_u8x8(); simde_uint8x8x4_t e = {{a, b, c, d}}; simde_test_arm_neon_write_u8x8x4(2, e, SIMDE_TEST_VEC_POS_FIRST); uint8_t buf[32]; simde_vst1_u8_x4(buf, e); simde_test_codegen_write_vu8(2, sizeof(buf) / sizeof(buf[0]), buf, SIMDE_TEST_VEC_POS_LAST); } return 1; #endif } static int test_simde_vst1_u16_x4 (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const struct { uint16_t r[4][4]; uint16_t a[16]; } test_vec[] = { { { { UINT16_C( 7407), UINT16_C(34184), UINT16_C(54090), UINT16_C( 2937) }, { UINT16_C(25548), UINT16_C(47410), UINT16_C(52044), UINT16_C(49878) }, { UINT16_C(59783), UINT16_C(28574), UINT16_C(53511), UINT16_C(55147) }, { UINT16_C(56285), UINT16_C(55911), UINT16_C(48709), UINT16_C(13358) } }, { UINT16_C( 7407), UINT16_C(34184), UINT16_C(54090), UINT16_C( 2937), UINT16_C(25548), UINT16_C(47410), UINT16_C(52044), UINT16_C(49878), UINT16_C(59783), UINT16_C(28574), UINT16_C(53511), UINT16_C(55147), UINT16_C(56285), UINT16_C(55911), UINT16_C(48709), UINT16_C(13358) } }, { { { UINT16_C(46810), UINT16_C( 9657), UINT16_C(12938), UINT16_C(22064) }, { UINT16_C(25237), UINT16_C(57872), UINT16_C(58926), UINT16_C(46500) }, { UINT16_C(17103), UINT16_C(54821), UINT16_C(36884), UINT16_C(61870) }, { UINT16_C( 5483), UINT16_C(45259), UINT16_C(63955), UINT16_C(44772) } }, { UINT16_C(46810), UINT16_C( 9657), UINT16_C(12938), UINT16_C(22064), UINT16_C(25237), UINT16_C(57872), UINT16_C(58926), UINT16_C(46500), UINT16_C(17103), UINT16_C(54821), UINT16_C(36884), UINT16_C(61870), UINT16_C( 5483), UINT16_C(45259), UINT16_C(63955), UINT16_C(44772) } }, { { { UINT16_C(40368), UINT16_C(15059), UINT16_C( 975), UINT16_C(26000) }, { UINT16_C(41061), UINT16_C(37703), UINT16_C(60295), UINT16_C(22089) }, { UINT16_C(28205), UINT16_C(16685), UINT16_C(56318), UINT16_C(27187) }, { UINT16_C(65264), UINT16_C(50202), UINT16_C(65528), UINT16_C(43122) } }, { UINT16_C(40368), UINT16_C(15059), UINT16_C( 975), UINT16_C(26000), UINT16_C(41061), UINT16_C(37703), UINT16_C(60295), UINT16_C(22089), UINT16_C(28205), UINT16_C(16685), UINT16_C(56318), UINT16_C(27187), UINT16_C(65264), UINT16_C(50202), UINT16_C(65528), UINT16_C(43122) } }, { { { UINT16_C(17820), UINT16_C(27874), UINT16_C(29256), UINT16_C(44497) }, { UINT16_C( 6163), UINT16_C(39489), UINT16_C(35331), UINT16_C(12528) }, { UINT16_C( 7672), UINT16_C(63090), UINT16_C(42488), UINT16_C(59744) }, { UINT16_C(31651), UINT16_C(39853), UINT16_C( 8058), UINT16_C( 5699) } }, { UINT16_C(17820), UINT16_C(27874), UINT16_C(29256), UINT16_C(44497), UINT16_C( 6163), UINT16_C(39489), UINT16_C(35331), UINT16_C(12528), UINT16_C( 7672), UINT16_C(63090), UINT16_C(42488), UINT16_C(59744), UINT16_C(31651), UINT16_C(39853), UINT16_C( 8058), UINT16_C( 5699) } }, { { { UINT16_C( 9572), UINT16_C(44162), UINT16_C(21400), UINT16_C(43865) }, { UINT16_C(39531), UINT16_C(28229), UINT16_C(13604), UINT16_C( 7327) }, { UINT16_C( 4435), UINT16_C(19219), UINT16_C(29622), UINT16_C(22836) }, { UINT16_C(57838), UINT16_C(26869), UINT16_C(14336), UINT16_C(25727) } }, { UINT16_C( 9572), UINT16_C(44162), UINT16_C(21400), UINT16_C(43865), UINT16_C(39531), UINT16_C(28229), UINT16_C(13604), UINT16_C( 7327), UINT16_C( 4435), UINT16_C(19219), UINT16_C(29622), UINT16_C(22836), UINT16_C(57838), UINT16_C(26869), UINT16_C(14336), UINT16_C(25727) } }, { { { UINT16_C( 350), UINT16_C(62992), UINT16_C(27221), UINT16_C(49313) }, { UINT16_C(58884), UINT16_C(10543), UINT16_C(52763), UINT16_C(28229) }, { UINT16_C(22751), UINT16_C(38330), UINT16_C(61132), UINT16_C(47854) }, { UINT16_C(58320), UINT16_C(53283), UINT16_C(41500), UINT16_C(31285) } }, { UINT16_C( 350), UINT16_C(62992), UINT16_C(27221), UINT16_C(49313), UINT16_C(58884), UINT16_C(10543), UINT16_C(52763), UINT16_C(28229), UINT16_C(22751), UINT16_C(38330), UINT16_C(61132), UINT16_C(47854), UINT16_C(58320), UINT16_C(53283), UINT16_C(41500), UINT16_C(31285) } }, { { { UINT16_C(17827), UINT16_C(63600), UINT16_C( 4527), UINT16_C(46265) }, { UINT16_C(59639), UINT16_C( 4829), UINT16_C( 8886), UINT16_C(38273) }, { UINT16_C(15227), UINT16_C(18218), UINT16_C( 6185), UINT16_C(63745) }, { UINT16_C( 9468), UINT16_C( 6346), UINT16_C(65478), UINT16_C(27282) } }, { UINT16_C(17827), UINT16_C(63600), UINT16_C( 4527), UINT16_C(46265), UINT16_C(59639), UINT16_C( 4829), UINT16_C( 8886), UINT16_C(38273), UINT16_C(15227), UINT16_C(18218), UINT16_C( 6185), UINT16_C(63745), UINT16_C( 9468), UINT16_C( 6346), UINT16_C(65478), UINT16_C(27282) } }, { { { UINT16_C( 580), UINT16_C(62562), UINT16_C( 6931), UINT16_C( 2728) }, { UINT16_C(34051), UINT16_C(47388), UINT16_C(40359), UINT16_C( 8782) }, { UINT16_C(30936), UINT16_C( 617), UINT16_C(27537), UINT16_C(36347) }, { UINT16_C(50575), UINT16_C(22181), UINT16_C(14276), UINT16_C( 2496) } }, { UINT16_C( 580), UINT16_C(62562), UINT16_C( 6931), UINT16_C( 2728), UINT16_C(34051), UINT16_C(47388), UINT16_C(40359), UINT16_C( 8782), UINT16_C(30936), UINT16_C( 617), UINT16_C(27537), UINT16_C(36347), UINT16_C(50575), UINT16_C(22181), UINT16_C(14276), UINT16_C( 2496) } }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_uint16x4x4_t r_ = { { simde_vld1_u16(test_vec[i].r[0]), simde_vld1_u16(test_vec[i].r[1]), simde_vld1_u16(test_vec[i].r[2]), simde_vld1_u16(test_vec[i].r[3]) } }; SIMDE_ALIGN_TO_16 uint16_t a_[16]; simde_vst1_u16_x4(a_, r_); simde_assert_equal_i(0, simde_memcmp(a_, test_vec[i].a, sizeof(test_vec[i].a))); } return 0; #else for (int i = 0 ; i < 8 ; i++) { simde_uint16x4_t a = simde_test_arm_neon_random_u16x4(); simde_uint16x4_t b = simde_test_arm_neon_random_u16x4(); simde_uint16x4_t c = simde_test_arm_neon_random_u16x4(); simde_uint16x4_t d = simde_test_arm_neon_random_u16x4(); simde_uint16x4x4_t e = {{a, b, c, d}}; simde_test_arm_neon_write_u16x4x4(2, e, SIMDE_TEST_VEC_POS_FIRST); uint16_t buf[16]; simde_vst1_u16_x4(buf, e); simde_test_codegen_write_vu16(2, sizeof(buf) / sizeof(buf[0]), buf, SIMDE_TEST_VEC_POS_LAST); } return 1; #endif } static int test_simde_vst1_u32_x4 (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const struct { uint32_t r[4][2]; uint32_t a[8]; } test_vec[] = { { { { UINT32_C(1291657785), UINT32_C(1096197438) }, { UINT32_C(3522916906), UINT32_C(3908323600) }, { UINT32_C(1407868354), UINT32_C(1491134152) }, { UINT32_C(1890485675), UINT32_C(4118376124) } }, { UINT32_C(1291657785), UINT32_C(1096197438), UINT32_C(3522916906), UINT32_C(3908323600), UINT32_C(1407868354), UINT32_C(1491134152), UINT32_C(1890485675), UINT32_C(4118376124) } }, { { { UINT32_C(3460396688), UINT32_C(1158715163) }, { UINT32_C( 420875017), UINT32_C( 369232468) }, { UINT32_C( 812248168), UINT32_C(2122861010) }, { UINT32_C(2330867406), UINT32_C( 897542052) } }, { UINT32_C(3460396688), UINT32_C(1158715163), UINT32_C( 420875017), UINT32_C( 369232468), UINT32_C( 812248168), UINT32_C(2122861010), UINT32_C(2330867406), UINT32_C( 897542052) } }, { { { UINT32_C(4160995549), UINT32_C(1631392599) }, { UINT32_C(1937396510), UINT32_C(3330899038) }, { UINT32_C(1006039913), UINT32_C( 196706108) }, { UINT32_C(1519757237), UINT32_C(3952022798) } }, { UINT32_C(4160995549), UINT32_C(1631392599), UINT32_C(1937396510), UINT32_C(3330899038), UINT32_C(1006039913), UINT32_C( 196706108), UINT32_C(1519757237), UINT32_C(3952022798) } }, { { { UINT32_C( 769888981), UINT32_C(3297648806) }, { UINT32_C(3526822004), UINT32_C(4002988421) }, { UINT32_C(4029255348), UINT32_C(3288064781) }, { UINT32_C(2568851850), UINT32_C(2072292518) } }, { UINT32_C( 769888981), UINT32_C(3297648806), UINT32_C(3526822004), UINT32_C(4002988421), UINT32_C(4029255348), UINT32_C(3288064781), UINT32_C(2568851850), UINT32_C(2072292518) } }, { { { UINT32_C(3836241982), UINT32_C(4238947976) }, { UINT32_C(3301892159), UINT32_C(1437755041) }, { UINT32_C( 38198261), UINT32_C(1237664190) }, { UINT32_C(2028135122), UINT32_C(3455346318) } }, { UINT32_C(3836241982), UINT32_C(4238947976), UINT32_C(3301892159), UINT32_C(1437755041), UINT32_C( 38198261), UINT32_C(1237664190), UINT32_C(2028135122), UINT32_C(3455346318) } }, { { { UINT32_C(1471257806), UINT32_C( 307452627) }, { UINT32_C(3705020987), UINT32_C(2100463752) }, { UINT32_C( 578844771), UINT32_C(2355840441) }, { UINT32_C(3053735208), UINT32_C(2189686963) } }, { UINT32_C(1471257806), UINT32_C( 307452627), UINT32_C(3705020987), UINT32_C(2100463752), UINT32_C( 578844771), UINT32_C(2355840441), UINT32_C(3053735208), UINT32_C(2189686963) } }, { { { UINT32_C(1759065493), UINT32_C(3397004431) }, { UINT32_C(3618066510), UINT32_C( 995416536) }, { UINT32_C( 173921361), UINT32_C(1117177882) }, { UINT32_C(3388513045), UINT32_C( 676035731) } }, { UINT32_C(1759065493), UINT32_C(3397004431), UINT32_C(3618066510), UINT32_C( 995416536), UINT32_C( 173921361), UINT32_C(1117177882), UINT32_C(3388513045), UINT32_C( 676035731) } }, { { { UINT32_C(1083188401), UINT32_C(2668300880) }, { UINT32_C( 846639706), UINT32_C(3698248331) }, { UINT32_C(3118910367), UINT32_C(2851831188) }, { UINT32_C(2876437272), UINT32_C( 550813039) } }, { UINT32_C(1083188401), UINT32_C(2668300880), UINT32_C( 846639706), UINT32_C(3698248331), UINT32_C(3118910367), UINT32_C(2851831188), UINT32_C(2876437272), UINT32_C( 550813039) } }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_uint32x2x4_t r_ = { { simde_vld1_u32(test_vec[i].r[0]), simde_vld1_u32(test_vec[i].r[1]), simde_vld1_u32(test_vec[i].r[2]), simde_vld1_u32(test_vec[i].r[3]) } }; SIMDE_ALIGN_TO_16 uint32_t a_[8]; simde_vst1_u32_x4(a_, r_); simde_assert_equal_i(0, simde_memcmp(a_, test_vec[i].a, sizeof(test_vec[i].a))); } return 0; #else for (int i = 0 ; i < 8 ; i++) { simde_uint32x2_t a = simde_test_arm_neon_random_u32x2(); simde_uint32x2_t b = simde_test_arm_neon_random_u32x2(); simde_uint32x2_t c = simde_test_arm_neon_random_u32x2(); simde_uint32x2_t d = simde_test_arm_neon_random_u32x2(); simde_uint32x2x4_t e = {{a, b, c, d}}; simde_test_arm_neon_write_u32x2x4(2, e, SIMDE_TEST_VEC_POS_FIRST); uint32_t buf[8]; simde_vst1_u32_x4(buf, e); simde_test_codegen_write_vu32(2, sizeof(buf) / sizeof(buf[0]), buf, SIMDE_TEST_VEC_POS_LAST); } return 1; #endif } static int test_simde_vst1_u64_x4 (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const struct { uint64_t r[4][1]; uint64_t a[4]; } test_vec[] = { { { { UINT64_C(14542523896598455521) }, { UINT64_C(12719689346676705054) }, { UINT64_C( 32480573296044853) }, { UINT64_C( 9577046048521381208) } }, { UINT64_C(14542523896598455521), UINT64_C(12719689346676705054), UINT64_C( 32480573296044853), UINT64_C( 9577046048521381208) } }, { { { UINT64_C(15212464329190689252) }, { UINT64_C(13299131365543647694) }, { UINT64_C(13138677273433668204) }, { UINT64_C( 7350550248164295130) } }, { UINT64_C(15212464329190689252), UINT64_C(13299131365543647694), UINT64_C(13138677273433668204), UINT64_C( 7350550248164295130) } }, { { { UINT64_C( 1024523012306221231) }, { UINT64_C( 2318086846211339247) }, { UINT64_C( 8975335007655931257) }, { UINT64_C( 2428843666941021388) } }, { UINT64_C( 1024523012306221231), UINT64_C( 2318086846211339247), UINT64_C( 8975335007655931257), UINT64_C( 2428843666941021388) } }, { { { UINT64_C( 3675988725210639796) }, { UINT64_C(16808508513841508719) }, { UINT64_C( 5808605048304941438) }, { UINT64_C( 5183171011618444891) } }, { UINT64_C( 3675988725210639796), UINT64_C(16808508513841508719), UINT64_C( 5808605048304941438), UINT64_C( 5183171011618444891) } }, { { { UINT64_C(11400649353367090112) }, { UINT64_C( 3209382832522779952) }, { UINT64_C(17695462734621854653) }, { UINT64_C( 4853104150470340735) } }, { UINT64_C(11400649353367090112), UINT64_C( 3209382832522779952), UINT64_C(17695462734621854653), UINT64_C( 4853104150470340735) } }, { { { UINT64_C( 283866222607963171) }, { UINT64_C( 8302154693671629148) }, { UINT64_C(17007639947772199800) }, { UINT64_C(11258250824909769079) } }, { UINT64_C( 283866222607963171), UINT64_C( 8302154693671629148), UINT64_C(17007639947772199800), UINT64_C(11258250824909769079) } }, { { { UINT64_C( 6827982613444986091) }, { UINT64_C( 844601480222172559) }, { UINT64_C( 3061363299852315683) }, { UINT64_C(13548061131060574958) } }, { UINT64_C( 6827982613444986091), UINT64_C( 844601480222172559), UINT64_C( 3061363299852315683), UINT64_C(13548061131060574958) } }, { { { UINT64_C( 7009356742278247397) }, { UINT64_C( 8232402338135322529) }, { UINT64_C( 8117595947971796170) }, { UINT64_C( 1262938830447102968) } }, { UINT64_C( 7009356742278247397), UINT64_C( 8232402338135322529), UINT64_C( 8117595947971796170), UINT64_C( 1262938830447102968) } }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_uint64x1x4_t r_ = { { simde_vld1_u64(test_vec[i].r[0]), simde_vld1_u64(test_vec[i].r[1]), simde_vld1_u64(test_vec[i].r[2]), simde_vld1_u64(test_vec[i].r[3]) } }; SIMDE_ALIGN_TO_16 uint64_t a_[4]; simde_vst1_u64_x4(a_, r_); simde_assert_equal_i(0, simde_memcmp(a_, test_vec[i].a, sizeof(test_vec[i].a))); } return 0; #else for (int i = 0 ; i < 8 ; i++) { simde_uint64x1_t a = simde_test_arm_neon_random_u64x1(); simde_uint64x1_t b = simde_test_arm_neon_random_u64x1(); simde_uint64x1_t c = simde_test_arm_neon_random_u64x1(); simde_uint64x1_t d = simde_test_arm_neon_random_u64x1(); simde_uint64x1x4_t e = {{a, b, c, d}}; simde_test_arm_neon_write_u64x1x4(2, e, SIMDE_TEST_VEC_POS_FIRST); uint64_t buf[4]; simde_vst1_u64_x4(buf, e); simde_test_codegen_write_vu64(2, sizeof(buf) / sizeof(buf[0]), buf, SIMDE_TEST_VEC_POS_LAST); } return 1; #endif } static int test_simde_vst1_p8_x4 (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const struct { SIMDE_ALIGN_TO_16 simde_poly8_t val[4][8]; SIMDE_ALIGN_TO_16 simde_poly8_t r[32]; } test_vec[] = { { { { SIMDE_POLY8_C( 239), SIMDE_POLY8_C( 168), SIMDE_POLY8_C( 132), SIMDE_POLY8_C( 115), SIMDE_POLY8_C( 182), SIMDE_POLY8_C( 107), SIMDE_POLY8_C( 214), SIMDE_POLY8_C( 157) }, { SIMDE_POLY8_C( 141), SIMDE_POLY8_C( 100), SIMDE_POLY8_C( 49), SIMDE_POLY8_C( 219), SIMDE_POLY8_C( 208), SIMDE_POLY8_C( 195), SIMDE_POLY8_C( 213), SIMDE_POLY8_C( 115) }, { SIMDE_POLY8_C( 92), SIMDE_POLY8_C( 129), SIMDE_POLY8_C( 185), SIMDE_POLY8_C( 113), SIMDE_POLY8_C( 95), SIMDE_POLY8_C( 0), SIMDE_POLY8_C( 33), SIMDE_POLY8_C( 41) }, { SIMDE_POLY8_C( 75), SIMDE_POLY8_C( 38), SIMDE_POLY8_C( 32), SIMDE_POLY8_C( 235), SIMDE_POLY8_C( 170), SIMDE_POLY8_C( 98), SIMDE_POLY8_C( 6), SIMDE_POLY8_C( 209) } }, { SIMDE_POLY8_C( 239), SIMDE_POLY8_C( 168), SIMDE_POLY8_C( 132), SIMDE_POLY8_C( 115), SIMDE_POLY8_C( 182), SIMDE_POLY8_C( 107), SIMDE_POLY8_C( 214), SIMDE_POLY8_C( 157), SIMDE_POLY8_C( 141), SIMDE_POLY8_C( 100), SIMDE_POLY8_C( 49), SIMDE_POLY8_C( 219), SIMDE_POLY8_C( 208), SIMDE_POLY8_C( 195), SIMDE_POLY8_C( 213), SIMDE_POLY8_C( 115), SIMDE_POLY8_C( 92), SIMDE_POLY8_C( 129), SIMDE_POLY8_C( 185), SIMDE_POLY8_C( 113), SIMDE_POLY8_C( 95), SIMDE_POLY8_C( 0), SIMDE_POLY8_C( 33), SIMDE_POLY8_C( 41), SIMDE_POLY8_C( 75), SIMDE_POLY8_C( 38), SIMDE_POLY8_C( 32), SIMDE_POLY8_C( 235), SIMDE_POLY8_C( 170), SIMDE_POLY8_C( 98), SIMDE_POLY8_C( 6), SIMDE_POLY8_C( 209) } }, { { { SIMDE_POLY8_C( 148), SIMDE_POLY8_C( 50), SIMDE_POLY8_C( 48), SIMDE_POLY8_C( 185), SIMDE_POLY8_C( 110), SIMDE_POLY8_C( 138), SIMDE_POLY8_C( 144), SIMDE_POLY8_C( 176) }, { SIMDE_POLY8_C( 122), SIMDE_POLY8_C( 143), SIMDE_POLY8_C( 192), SIMDE_POLY8_C( 216), SIMDE_POLY8_C( 143), SIMDE_POLY8_C( 194), SIMDE_POLY8_C( 121), SIMDE_POLY8_C( 67) }, { SIMDE_POLY8_C( 179), SIMDE_POLY8_C( 168), SIMDE_POLY8_C( 133), SIMDE_POLY8_C( 72), SIMDE_POLY8_C( 179), SIMDE_POLY8_C( 95), SIMDE_POLY8_C( 148), SIMDE_POLY8_C( 195) }, { SIMDE_POLY8_C( 223), SIMDE_POLY8_C( 88), SIMDE_POLY8_C( 63), SIMDE_POLY8_C( 11), SIMDE_POLY8_C( 36), SIMDE_POLY8_C( 178), SIMDE_POLY8_C( 194), SIMDE_POLY8_C( 157) } }, { SIMDE_POLY8_C( 148), SIMDE_POLY8_C( 50), SIMDE_POLY8_C( 48), SIMDE_POLY8_C( 185), SIMDE_POLY8_C( 110), SIMDE_POLY8_C( 138), SIMDE_POLY8_C( 144), SIMDE_POLY8_C( 176), SIMDE_POLY8_C( 122), SIMDE_POLY8_C( 143), SIMDE_POLY8_C( 192), SIMDE_POLY8_C( 216), SIMDE_POLY8_C( 143), SIMDE_POLY8_C( 194), SIMDE_POLY8_C( 121), SIMDE_POLY8_C( 67), SIMDE_POLY8_C( 179), SIMDE_POLY8_C( 168), SIMDE_POLY8_C( 133), SIMDE_POLY8_C( 72), SIMDE_POLY8_C( 179), SIMDE_POLY8_C( 95), SIMDE_POLY8_C( 148), SIMDE_POLY8_C( 195), SIMDE_POLY8_C( 223), SIMDE_POLY8_C( 88), SIMDE_POLY8_C( 63), SIMDE_POLY8_C( 11), SIMDE_POLY8_C( 36), SIMDE_POLY8_C( 178), SIMDE_POLY8_C( 194), SIMDE_POLY8_C( 157) } }, { { { SIMDE_POLY8_C( 43), SIMDE_POLY8_C( 177), SIMDE_POLY8_C( 40), SIMDE_POLY8_C( 24), SIMDE_POLY8_C( 213), SIMDE_POLY8_C( 77), SIMDE_POLY8_C( 57), SIMDE_POLY8_C( 192) }, { SIMDE_POLY8_C( 132), SIMDE_POLY8_C( 178), SIMDE_POLY8_C( 180), SIMDE_POLY8_C( 94), SIMDE_POLY8_C( 165), SIMDE_POLY8_C( 67), SIMDE_POLY8_C( 250), SIMDE_POLY8_C( 181) }, { SIMDE_POLY8_C( 228), SIMDE_POLY8_C( 198), SIMDE_POLY8_C( 209), SIMDE_POLY8_C( 170), SIMDE_POLY8_C( 116), SIMDE_POLY8_C( 78), SIMDE_POLY8_C( 243), SIMDE_POLY8_C( 109) }, { SIMDE_POLY8_C( 206), SIMDE_POLY8_C( 24), SIMDE_POLY8_C( 164), SIMDE_POLY8_C( 108), SIMDE_POLY8_C( 42), SIMDE_POLY8_C( 143), SIMDE_POLY8_C( 212), SIMDE_POLY8_C( 141) } }, { SIMDE_POLY8_C( 43), SIMDE_POLY8_C( 177), SIMDE_POLY8_C( 40), SIMDE_POLY8_C( 24), SIMDE_POLY8_C( 213), SIMDE_POLY8_C( 77), SIMDE_POLY8_C( 57), SIMDE_POLY8_C( 192), SIMDE_POLY8_C( 132), SIMDE_POLY8_C( 178), SIMDE_POLY8_C( 180), SIMDE_POLY8_C( 94), SIMDE_POLY8_C( 165), SIMDE_POLY8_C( 67), SIMDE_POLY8_C( 250), SIMDE_POLY8_C( 181), SIMDE_POLY8_C( 228), SIMDE_POLY8_C( 198), SIMDE_POLY8_C( 209), SIMDE_POLY8_C( 170), SIMDE_POLY8_C( 116), SIMDE_POLY8_C( 78), SIMDE_POLY8_C( 243), SIMDE_POLY8_C( 109), SIMDE_POLY8_C( 206), SIMDE_POLY8_C( 24), SIMDE_POLY8_C( 164), SIMDE_POLY8_C( 108), SIMDE_POLY8_C( 42), SIMDE_POLY8_C( 143), SIMDE_POLY8_C( 212), SIMDE_POLY8_C( 141) } }, { { { SIMDE_POLY8_C( 182), SIMDE_POLY8_C( 18), SIMDE_POLY8_C( 47), SIMDE_POLY8_C( 217), SIMDE_POLY8_C( 176), SIMDE_POLY8_C( 61), SIMDE_POLY8_C( 103), SIMDE_POLY8_C( 194) }, { SIMDE_POLY8_C( 88), SIMDE_POLY8_C( 238), SIMDE_POLY8_C( 228), SIMDE_POLY8_C( 6), SIMDE_POLY8_C( 41), SIMDE_POLY8_C( 120), SIMDE_POLY8_C( 117), SIMDE_POLY8_C( 253) }, { SIMDE_POLY8_C( 97), SIMDE_POLY8_C( 139), SIMDE_POLY8_C( 69), SIMDE_POLY8_C( 245), SIMDE_POLY8_C( 231), SIMDE_POLY8_C( 199), SIMDE_POLY8_C( 213), SIMDE_POLY8_C(UINT8_MAX) }, { SIMDE_POLY8_C( 22), SIMDE_POLY8_C( 83), SIMDE_POLY8_C( 169), SIMDE_POLY8_C( 201), SIMDE_POLY8_C( 197), SIMDE_POLY8_C( 237), SIMDE_POLY8_C( 9), SIMDE_POLY8_C( 172) } }, { SIMDE_POLY8_C( 182), SIMDE_POLY8_C( 18), SIMDE_POLY8_C( 47), SIMDE_POLY8_C( 217), SIMDE_POLY8_C( 176), SIMDE_POLY8_C( 61), SIMDE_POLY8_C( 103), SIMDE_POLY8_C( 194), SIMDE_POLY8_C( 88), SIMDE_POLY8_C( 238), SIMDE_POLY8_C( 228), SIMDE_POLY8_C( 6), SIMDE_POLY8_C( 41), SIMDE_POLY8_C( 120), SIMDE_POLY8_C( 117), SIMDE_POLY8_C( 253), SIMDE_POLY8_C( 97), SIMDE_POLY8_C( 139), SIMDE_POLY8_C( 69), SIMDE_POLY8_C( 245), SIMDE_POLY8_C( 231), SIMDE_POLY8_C( 199), SIMDE_POLY8_C( 213), SIMDE_POLY8_C(UINT8_MAX), SIMDE_POLY8_C( 22), SIMDE_POLY8_C( 83), SIMDE_POLY8_C( 169), SIMDE_POLY8_C( 201), SIMDE_POLY8_C( 197), SIMDE_POLY8_C( 237), SIMDE_POLY8_C( 9), SIMDE_POLY8_C( 172) } }, { { { SIMDE_POLY8_C( 128), SIMDE_POLY8_C( 154), SIMDE_POLY8_C( 118), SIMDE_POLY8_C( 61), SIMDE_POLY8_C( 73), SIMDE_POLY8_C( 6), SIMDE_POLY8_C( 166), SIMDE_POLY8_C( 118) }, { SIMDE_POLY8_C( 187), SIMDE_POLY8_C( 16), SIMDE_POLY8_C( 233), SIMDE_POLY8_C( 193), SIMDE_POLY8_C( 249), SIMDE_POLY8_C( 106), SIMDE_POLY8_C( 51), SIMDE_POLY8_C( 5) }, { SIMDE_POLY8_C( 0), SIMDE_POLY8_C( 75), SIMDE_POLY8_C( 26), SIMDE_POLY8_C( 149), SIMDE_POLY8_C( 47), SIMDE_POLY8_C( 146), SIMDE_POLY8_C( 151), SIMDE_POLY8_C( 119) }, { SIMDE_POLY8_C( 49), SIMDE_POLY8_C( 179), SIMDE_POLY8_C( 152), SIMDE_POLY8_C( 44), SIMDE_POLY8_C( 240), SIMDE_POLY8_C( 34), SIMDE_POLY8_C( 6), SIMDE_POLY8_C( 157) } }, { SIMDE_POLY8_C( 128), SIMDE_POLY8_C( 154), SIMDE_POLY8_C( 118), SIMDE_POLY8_C( 61), SIMDE_POLY8_C( 73), SIMDE_POLY8_C( 6), SIMDE_POLY8_C( 166), SIMDE_POLY8_C( 118), SIMDE_POLY8_C( 187), SIMDE_POLY8_C( 16), SIMDE_POLY8_C( 233), SIMDE_POLY8_C( 193), SIMDE_POLY8_C( 249), SIMDE_POLY8_C( 106), SIMDE_POLY8_C( 51), SIMDE_POLY8_C( 5), SIMDE_POLY8_C( 0), SIMDE_POLY8_C( 75), SIMDE_POLY8_C( 26), SIMDE_POLY8_C( 149), SIMDE_POLY8_C( 47), SIMDE_POLY8_C( 146), SIMDE_POLY8_C( 151), SIMDE_POLY8_C( 119), SIMDE_POLY8_C( 49), SIMDE_POLY8_C( 179), SIMDE_POLY8_C( 152), SIMDE_POLY8_C( 44), SIMDE_POLY8_C( 240), SIMDE_POLY8_C( 34), SIMDE_POLY8_C( 6), SIMDE_POLY8_C( 157) } }, { { { SIMDE_POLY8_C( 167), SIMDE_POLY8_C( 171), SIMDE_POLY8_C( 139), SIMDE_POLY8_C( 154), SIMDE_POLY8_C( 37), SIMDE_POLY8_C( 63), SIMDE_POLY8_C( 72), SIMDE_POLY8_C( 222) }, { SIMDE_POLY8_C( 201), SIMDE_POLY8_C( 57), SIMDE_POLY8_C( 213), SIMDE_POLY8_C( 212), SIMDE_POLY8_C( 191), SIMDE_POLY8_C( 24), SIMDE_POLY8_C( 111), SIMDE_POLY8_C( 131) }, { SIMDE_POLY8_C( 254), SIMDE_POLY8_C( 151), SIMDE_POLY8_C( 9), SIMDE_POLY8_C( 174), SIMDE_POLY8_C( 99), SIMDE_POLY8_C( 10), SIMDE_POLY8_C( 210), SIMDE_POLY8_C( 94) }, { SIMDE_POLY8_C( 195), SIMDE_POLY8_C( 94), SIMDE_POLY8_C( 45), SIMDE_POLY8_C( 141), SIMDE_POLY8_C( 153), SIMDE_POLY8_C( 247), SIMDE_POLY8_C( 220), SIMDE_POLY8_C( 86) } }, { SIMDE_POLY8_C( 167), SIMDE_POLY8_C( 171), SIMDE_POLY8_C( 139), SIMDE_POLY8_C( 154), SIMDE_POLY8_C( 37), SIMDE_POLY8_C( 63), SIMDE_POLY8_C( 72), SIMDE_POLY8_C( 222), SIMDE_POLY8_C( 201), SIMDE_POLY8_C( 57), SIMDE_POLY8_C( 213), SIMDE_POLY8_C( 212), SIMDE_POLY8_C( 191), SIMDE_POLY8_C( 24), SIMDE_POLY8_C( 111), SIMDE_POLY8_C( 131), SIMDE_POLY8_C( 254), SIMDE_POLY8_C( 151), SIMDE_POLY8_C( 9), SIMDE_POLY8_C( 174), SIMDE_POLY8_C( 99), SIMDE_POLY8_C( 10), SIMDE_POLY8_C( 210), SIMDE_POLY8_C( 94), SIMDE_POLY8_C( 195), SIMDE_POLY8_C( 94), SIMDE_POLY8_C( 45), SIMDE_POLY8_C( 141), SIMDE_POLY8_C( 153), SIMDE_POLY8_C( 247), SIMDE_POLY8_C( 220), SIMDE_POLY8_C( 86) } }, { { { SIMDE_POLY8_C( 102), SIMDE_POLY8_C( 10), SIMDE_POLY8_C( 211), SIMDE_POLY8_C( 85), SIMDE_POLY8_C( 84), SIMDE_POLY8_C( 254), SIMDE_POLY8_C( 78), SIMDE_POLY8_C( 151) }, { SIMDE_POLY8_C( 91), SIMDE_POLY8_C( 193), SIMDE_POLY8_C( 79), SIMDE_POLY8_C( 231), SIMDE_POLY8_C( 192), SIMDE_POLY8_C( 64), SIMDE_POLY8_C( 200), SIMDE_POLY8_C( 174) }, { SIMDE_POLY8_C( 98), SIMDE_POLY8_C( 89), SIMDE_POLY8_C( 171), SIMDE_POLY8_C( 211), SIMDE_POLY8_C( 7), SIMDE_POLY8_C( 78), SIMDE_POLY8_C( 147), SIMDE_POLY8_C( 134) }, { SIMDE_POLY8_C( 142), SIMDE_POLY8_C( 197), SIMDE_POLY8_C( 109), SIMDE_POLY8_C( 68), SIMDE_POLY8_C( 58), SIMDE_POLY8_C( 95), SIMDE_POLY8_C( 247), SIMDE_POLY8_C( 91) } }, { SIMDE_POLY8_C( 102), SIMDE_POLY8_C( 10), SIMDE_POLY8_C( 211), SIMDE_POLY8_C( 85), SIMDE_POLY8_C( 84), SIMDE_POLY8_C( 254), SIMDE_POLY8_C( 78), SIMDE_POLY8_C( 151), SIMDE_POLY8_C( 91), SIMDE_POLY8_C( 193), SIMDE_POLY8_C( 79), SIMDE_POLY8_C( 231), SIMDE_POLY8_C( 192), SIMDE_POLY8_C( 64), SIMDE_POLY8_C( 200), SIMDE_POLY8_C( 174), SIMDE_POLY8_C( 98), SIMDE_POLY8_C( 89), SIMDE_POLY8_C( 171), SIMDE_POLY8_C( 211), SIMDE_POLY8_C( 7), SIMDE_POLY8_C( 78), SIMDE_POLY8_C( 147), SIMDE_POLY8_C( 134), SIMDE_POLY8_C( 142), SIMDE_POLY8_C( 197), SIMDE_POLY8_C( 109), SIMDE_POLY8_C( 68), SIMDE_POLY8_C( 58), SIMDE_POLY8_C( 95), SIMDE_POLY8_C( 247), SIMDE_POLY8_C( 91) } }, { { { SIMDE_POLY8_C( 123), SIMDE_POLY8_C( 118), SIMDE_POLY8_C( 31), SIMDE_POLY8_C( 26), SIMDE_POLY8_C( 252), SIMDE_POLY8_C( 113), SIMDE_POLY8_C( 237), SIMDE_POLY8_C( 182) }, { SIMDE_POLY8_C( 242), SIMDE_POLY8_C( 208), SIMDE_POLY8_C( 24), SIMDE_POLY8_C( 107), SIMDE_POLY8_C( 70), SIMDE_POLY8_C( 26), SIMDE_POLY8_C( 252), SIMDE_POLY8_C( 190) }, { SIMDE_POLY8_C( 35), SIMDE_POLY8_C( 227), SIMDE_POLY8_C( 22), SIMDE_POLY8_C( 221), SIMDE_POLY8_C( 34), SIMDE_POLY8_C( 116), SIMDE_POLY8_C( 6), SIMDE_POLY8_C( 26) }, { SIMDE_POLY8_C( 219), SIMDE_POLY8_C( 78), SIMDE_POLY8_C( 38), SIMDE_POLY8_C( 32), SIMDE_POLY8_C( 207), SIMDE_POLY8_C( 67), SIMDE_POLY8_C( 113), SIMDE_POLY8_C( 148) } }, { SIMDE_POLY8_C( 123), SIMDE_POLY8_C( 118), SIMDE_POLY8_C( 31), SIMDE_POLY8_C( 26), SIMDE_POLY8_C( 252), SIMDE_POLY8_C( 113), SIMDE_POLY8_C( 237), SIMDE_POLY8_C( 182), SIMDE_POLY8_C( 242), SIMDE_POLY8_C( 208), SIMDE_POLY8_C( 24), SIMDE_POLY8_C( 107), SIMDE_POLY8_C( 70), SIMDE_POLY8_C( 26), SIMDE_POLY8_C( 252), SIMDE_POLY8_C( 190), SIMDE_POLY8_C( 35), SIMDE_POLY8_C( 227), SIMDE_POLY8_C( 22), SIMDE_POLY8_C( 221), SIMDE_POLY8_C( 34), SIMDE_POLY8_C( 116), SIMDE_POLY8_C( 6), SIMDE_POLY8_C( 26), SIMDE_POLY8_C( 219), SIMDE_POLY8_C( 78), SIMDE_POLY8_C( 38), SIMDE_POLY8_C( 32), SIMDE_POLY8_C( 207), SIMDE_POLY8_C( 67), SIMDE_POLY8_C( 113), SIMDE_POLY8_C( 148) } }, }; for (size_t i = 0; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) { SIMDE_ALIGN_TO_16 simde_poly8x8x4_t val = {{ simde_vld1_p8(test_vec[i].val[0]), simde_vld1_p8(test_vec[i].val[1]), simde_vld1_p8(test_vec[i].val[2]), simde_vld1_p8(test_vec[i].val[3]), }}; SIMDE_ALIGN_TO_16 simde_poly8_t r_[32]; simde_vst1_p8_x4(r_, val); simde_assert_equal_i(0, simde_memcmp(r_, test_vec[i].r, sizeof(test_vec[i].r))); } return 0; #else fputc('\n', stdout); for (int i = 0 ; i < 8 ; i++) { simde_poly8x4_t val[4] = simde_test_arm_neon_random_p8x4(); simde_poly8x32_t r = simde_vst1_p8_x4(val[4]); simde_test_arm_neon_write_p8x4(2, val[4], SIMDE_TEST_VEC_POS_FIRST); simde_test_arm_neon_write_p8x32(2, r, SIMDE_TEST_VEC_POS_LAST); } return 1; #endif } static int test_simde_vst1_p16_x4 (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const struct { SIMDE_ALIGN_TO_16 simde_poly16_t val[4][4]; SIMDE_ALIGN_TO_16 simde_poly16_t r[16]; } test_vec[] = { { { { SIMDE_POLY16_C( 25729), SIMDE_POLY16_C( 57056), SIMDE_POLY16_C( 7758), SIMDE_POLY16_C( 29592) }, { SIMDE_POLY16_C( 62257), SIMDE_POLY16_C( 4465), SIMDE_POLY16_C( 51976), SIMDE_POLY16_C( 54089) }, { SIMDE_POLY16_C( 26431), SIMDE_POLY16_C( 44784), SIMDE_POLY16_C( 55229), SIMDE_POLY16_C( 15821) }, { SIMDE_POLY16_C( 50051), SIMDE_POLY16_C( 60405), SIMDE_POLY16_C( 45404), SIMDE_POLY16_C( 55525) } }, { SIMDE_POLY16_C( 25729), SIMDE_POLY16_C( 57056), SIMDE_POLY16_C( 7758), SIMDE_POLY16_C( 29592), SIMDE_POLY16_C( 62257), SIMDE_POLY16_C( 4465), SIMDE_POLY16_C( 51976), SIMDE_POLY16_C( 54089), SIMDE_POLY16_C( 26431), SIMDE_POLY16_C( 44784), SIMDE_POLY16_C( 55229), SIMDE_POLY16_C( 15821), SIMDE_POLY16_C( 50051), SIMDE_POLY16_C( 60405), SIMDE_POLY16_C( 45404), SIMDE_POLY16_C( 55525) } }, { { { SIMDE_POLY16_C( 17349), SIMDE_POLY16_C( 44793), SIMDE_POLY16_C( 25550), SIMDE_POLY16_C( 46441) }, { SIMDE_POLY16_C( 24722), SIMDE_POLY16_C( 64482), SIMDE_POLY16_C( 10748), SIMDE_POLY16_C( 18274) }, { SIMDE_POLY16_C( 5783), SIMDE_POLY16_C( 59648), SIMDE_POLY16_C( 35010), SIMDE_POLY16_C( 22686) }, { SIMDE_POLY16_C( 30096), SIMDE_POLY16_C( 53437), SIMDE_POLY16_C( 44820), SIMDE_POLY16_C( 20697) } }, { SIMDE_POLY16_C( 17349), SIMDE_POLY16_C( 44793), SIMDE_POLY16_C( 25550), SIMDE_POLY16_C( 46441), SIMDE_POLY16_C( 24722), SIMDE_POLY16_C( 64482), SIMDE_POLY16_C( 10748), SIMDE_POLY16_C( 18274), SIMDE_POLY16_C( 5783), SIMDE_POLY16_C( 59648), SIMDE_POLY16_C( 35010), SIMDE_POLY16_C( 22686), SIMDE_POLY16_C( 30096), SIMDE_POLY16_C( 53437), SIMDE_POLY16_C( 44820), SIMDE_POLY16_C( 20697) } }, { { { SIMDE_POLY16_C( 42648), SIMDE_POLY16_C( 4377), SIMDE_POLY16_C( 27340), SIMDE_POLY16_C( 51159) }, { SIMDE_POLY16_C( 4903), SIMDE_POLY16_C( 14904), SIMDE_POLY16_C( 13563), SIMDE_POLY16_C( 32034) }, { SIMDE_POLY16_C( 32057), SIMDE_POLY16_C( 56981), SIMDE_POLY16_C( 19267), SIMDE_POLY16_C( 2532) }, { SIMDE_POLY16_C( 30715), SIMDE_POLY16_C( 52038), SIMDE_POLY16_C( 306), SIMDE_POLY16_C( 22885) } }, { SIMDE_POLY16_C( 42648), SIMDE_POLY16_C( 4377), SIMDE_POLY16_C( 27340), SIMDE_POLY16_C( 51159), SIMDE_POLY16_C( 4903), SIMDE_POLY16_C( 14904), SIMDE_POLY16_C( 13563), SIMDE_POLY16_C( 32034), SIMDE_POLY16_C( 32057), SIMDE_POLY16_C( 56981), SIMDE_POLY16_C( 19267), SIMDE_POLY16_C( 2532), SIMDE_POLY16_C( 30715), SIMDE_POLY16_C( 52038), SIMDE_POLY16_C( 306), SIMDE_POLY16_C( 22885) } }, { { { SIMDE_POLY16_C( 53559), SIMDE_POLY16_C( 6890), SIMDE_POLY16_C( 56353), SIMDE_POLY16_C( 57009) }, { SIMDE_POLY16_C( 48909), SIMDE_POLY16_C( 11096), SIMDE_POLY16_C( 51800), SIMDE_POLY16_C( 23412) }, { SIMDE_POLY16_C( 14981), SIMDE_POLY16_C( 56121), SIMDE_POLY16_C( 837), SIMDE_POLY16_C( 40527) }, { SIMDE_POLY16_C( 50574), SIMDE_POLY16_C( 43382), SIMDE_POLY16_C( 51940), SIMDE_POLY16_C( 27375) } }, { SIMDE_POLY16_C( 53559), SIMDE_POLY16_C( 6890), SIMDE_POLY16_C( 56353), SIMDE_POLY16_C( 57009), SIMDE_POLY16_C( 48909), SIMDE_POLY16_C( 11096), SIMDE_POLY16_C( 51800), SIMDE_POLY16_C( 23412), SIMDE_POLY16_C( 14981), SIMDE_POLY16_C( 56121), SIMDE_POLY16_C( 837), SIMDE_POLY16_C( 40527), SIMDE_POLY16_C( 50574), SIMDE_POLY16_C( 43382), SIMDE_POLY16_C( 51940), SIMDE_POLY16_C( 27375) } }, { { { SIMDE_POLY16_C( 39251), SIMDE_POLY16_C( 42099), SIMDE_POLY16_C( 5104), SIMDE_POLY16_C( 2499) }, { SIMDE_POLY16_C( 57630), SIMDE_POLY16_C( 34855), SIMDE_POLY16_C( 31484), SIMDE_POLY16_C( 34958) }, { SIMDE_POLY16_C( 2288), SIMDE_POLY16_C( 43010), SIMDE_POLY16_C( 36889), SIMDE_POLY16_C( 47213) }, { SIMDE_POLY16_C( 34452), SIMDE_POLY16_C( 51460), SIMDE_POLY16_C( 2692), SIMDE_POLY16_C( 63261) } }, { SIMDE_POLY16_C( 39251), SIMDE_POLY16_C( 42099), SIMDE_POLY16_C( 5104), SIMDE_POLY16_C( 2499), SIMDE_POLY16_C( 57630), SIMDE_POLY16_C( 34855), SIMDE_POLY16_C( 31484), SIMDE_POLY16_C( 34958), SIMDE_POLY16_C( 2288), SIMDE_POLY16_C( 43010), SIMDE_POLY16_C( 36889), SIMDE_POLY16_C( 47213), SIMDE_POLY16_C( 34452), SIMDE_POLY16_C( 51460), SIMDE_POLY16_C( 2692), SIMDE_POLY16_C( 63261) } }, { { { SIMDE_POLY16_C( 58118), SIMDE_POLY16_C( 59824), SIMDE_POLY16_C( 23288), SIMDE_POLY16_C( 53095) }, { SIMDE_POLY16_C( 50525), SIMDE_POLY16_C( 55648), SIMDE_POLY16_C( 5199), SIMDE_POLY16_C( 13794) }, { SIMDE_POLY16_C( 14969), SIMDE_POLY16_C( 37017), SIMDE_POLY16_C( 8919), SIMDE_POLY16_C( 17478) }, { SIMDE_POLY16_C( 37316), SIMDE_POLY16_C( 55686), SIMDE_POLY16_C( 24672), SIMDE_POLY16_C( 28152) } }, { SIMDE_POLY16_C( 58118), SIMDE_POLY16_C( 59824), SIMDE_POLY16_C( 23288), SIMDE_POLY16_C( 53095), SIMDE_POLY16_C( 50525), SIMDE_POLY16_C( 55648), SIMDE_POLY16_C( 5199), SIMDE_POLY16_C( 13794), SIMDE_POLY16_C( 14969), SIMDE_POLY16_C( 37017), SIMDE_POLY16_C( 8919), SIMDE_POLY16_C( 17478), SIMDE_POLY16_C( 37316), SIMDE_POLY16_C( 55686), SIMDE_POLY16_C( 24672), SIMDE_POLY16_C( 28152) } }, { { { SIMDE_POLY16_C( 17543), SIMDE_POLY16_C( 40074), SIMDE_POLY16_C( 30410), SIMDE_POLY16_C( 26387) }, { SIMDE_POLY16_C( 21270), SIMDE_POLY16_C( 41373), SIMDE_POLY16_C( 31235), SIMDE_POLY16_C( 50624) }, { SIMDE_POLY16_C( 19705), SIMDE_POLY16_C( 34403), SIMDE_POLY16_C( 19947), SIMDE_POLY16_C( 59226) }, { SIMDE_POLY16_C( 47944), SIMDE_POLY16_C( 63286), SIMDE_POLY16_C( 49228), SIMDE_POLY16_C( 47010) } }, { SIMDE_POLY16_C( 17543), SIMDE_POLY16_C( 40074), SIMDE_POLY16_C( 30410), SIMDE_POLY16_C( 26387), SIMDE_POLY16_C( 21270), SIMDE_POLY16_C( 41373), SIMDE_POLY16_C( 31235), SIMDE_POLY16_C( 50624), SIMDE_POLY16_C( 19705), SIMDE_POLY16_C( 34403), SIMDE_POLY16_C( 19947), SIMDE_POLY16_C( 59226), SIMDE_POLY16_C( 47944), SIMDE_POLY16_C( 63286), SIMDE_POLY16_C( 49228), SIMDE_POLY16_C( 47010) } }, { { { SIMDE_POLY16_C( 53438), SIMDE_POLY16_C( 17092), SIMDE_POLY16_C( 36983), SIMDE_POLY16_C( 2008) }, { SIMDE_POLY16_C( 2670), SIMDE_POLY16_C( 53725), SIMDE_POLY16_C( 26306), SIMDE_POLY16_C( 62606) }, { SIMDE_POLY16_C( 43376), SIMDE_POLY16_C( 50048), SIMDE_POLY16_C( 48101), SIMDE_POLY16_C( 24429) }, { SIMDE_POLY16_C( 49509), SIMDE_POLY16_C( 7357), SIMDE_POLY16_C( 64642), SIMDE_POLY16_C( 5212) } }, { SIMDE_POLY16_C( 53438), SIMDE_POLY16_C( 17092), SIMDE_POLY16_C( 36983), SIMDE_POLY16_C( 2008), SIMDE_POLY16_C( 2670), SIMDE_POLY16_C( 53725), SIMDE_POLY16_C( 26306), SIMDE_POLY16_C( 62606), SIMDE_POLY16_C( 43376), SIMDE_POLY16_C( 50048), SIMDE_POLY16_C( 48101), SIMDE_POLY16_C( 24429), SIMDE_POLY16_C( 49509), SIMDE_POLY16_C( 7357), SIMDE_POLY16_C( 64642), SIMDE_POLY16_C( 5212) } }, }; for (size_t i = 0; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) { SIMDE_ALIGN_TO_16 simde_poly16x4x4_t val = {{ simde_vld1_p16(test_vec[i].val[0]), simde_vld1_p16(test_vec[i].val[1]), simde_vld1_p16(test_vec[i].val[2]), simde_vld1_p16(test_vec[i].val[3]), }}; SIMDE_ALIGN_TO_16 simde_poly16_t r_[16]; simde_vst1_p16_x4(r_, val); simde_assert_equal_i(0, simde_memcmp(r_, test_vec[i].r, sizeof(test_vec[i].r))); } return 0; #else fputc('\n', stdout); for (int i = 0 ; i < 8 ; i++) { simde_poly16x4_t val[4] = simde_test_arm_neon_random_p16x4(); simde_poly16x16_t r = simde_vst1_p16_x4(val[4]); simde_test_arm_neon_write_p16x4(2, val[4], SIMDE_TEST_VEC_POS_FIRST); simde_test_arm_neon_write_p16x16(2, r, SIMDE_TEST_VEC_POS_LAST); } return 1; #endif } static int test_simde_vst1_p64_x4 (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const struct { simde_poly64_t val[4][1]; simde_poly64_t r[4]; } test_vec[] = { { { { SIMDE_POLY64_C(11331190946082064707) }, { SIMDE_POLY64_C(11498420970478559256) }, { SIMDE_POLY64_C(17459515880911279401) }, { SIMDE_POLY64_C(14751399554180394610) } }, { SIMDE_POLY64_C(11331190946082064707), SIMDE_POLY64_C(11498420970478559256), SIMDE_POLY64_C(17459515880911279401), SIMDE_POLY64_C(14751399554180394610) } }, { { { SIMDE_POLY64_C(12349406127557705267) }, { SIMDE_POLY64_C( 8536837362503229377) }, { SIMDE_POLY64_C(16068182070406184944) }, { SIMDE_POLY64_C( 6428988212758009192) } }, { SIMDE_POLY64_C(12349406127557705267), SIMDE_POLY64_C( 8536837362503229377), SIMDE_POLY64_C(16068182070406184944), SIMDE_POLY64_C( 6428988212758009192) } }, { { { SIMDE_POLY64_C(10337944098472616063) }, { SIMDE_POLY64_C(17492108346561249817) }, { SIMDE_POLY64_C(17233336674284866078) }, { SIMDE_POLY64_C(15935359759627089722) } }, { SIMDE_POLY64_C(10337944098472616063), SIMDE_POLY64_C(17492108346561249817), SIMDE_POLY64_C(17233336674284866078), SIMDE_POLY64_C(15935359759627089722) } }, { { { SIMDE_POLY64_C(16279553021308737546) }, { SIMDE_POLY64_C( 9018088935562207240) }, { SIMDE_POLY64_C(17764612581298294279) }, { SIMDE_POLY64_C( 2603852360698883883) } }, { SIMDE_POLY64_C(16279553021308737546), SIMDE_POLY64_C( 9018088935562207240), SIMDE_POLY64_C(17764612581298294279), SIMDE_POLY64_C( 2603852360698883883) } }, { { { SIMDE_POLY64_C(18144162643747849065) }, { SIMDE_POLY64_C( 2649716231223261360) }, { SIMDE_POLY64_C(10930916692415351524) }, { SIMDE_POLY64_C(15142691853928273144) } }, { SIMDE_POLY64_C(18144162643747849065), SIMDE_POLY64_C( 2649716231223261360), SIMDE_POLY64_C(10930916692415351524), SIMDE_POLY64_C(15142691853928273144) } }, { { { SIMDE_POLY64_C( 7120409268978699567) }, { SIMDE_POLY64_C( 23296796017984974) }, { SIMDE_POLY64_C( 4405647812432063866) }, { SIMDE_POLY64_C(13471050062601811241) } }, { SIMDE_POLY64_C( 7120409268978699567), SIMDE_POLY64_C( 23296796017984974), SIMDE_POLY64_C( 4405647812432063866), SIMDE_POLY64_C(13471050062601811241) } }, { { { SIMDE_POLY64_C( 4203922365968289552) }, { SIMDE_POLY64_C( 8555413176694307830) }, { SIMDE_POLY64_C( 6661072410805989454) }, { SIMDE_POLY64_C(13297436747740813836) } }, { SIMDE_POLY64_C( 4203922365968289552), SIMDE_POLY64_C( 8555413176694307830), SIMDE_POLY64_C( 6661072410805989454), SIMDE_POLY64_C(13297436747740813836) } }, { { { SIMDE_POLY64_C( 2706593918937914786) }, { SIMDE_POLY64_C(17237405973050261558) }, { SIMDE_POLY64_C(15312265763484903164) }, { SIMDE_POLY64_C( 664393409059271305) } }, { SIMDE_POLY64_C( 2706593918937914786), SIMDE_POLY64_C(17237405973050261558), SIMDE_POLY64_C(15312265763484903164), SIMDE_POLY64_C( 664393409059271305) } }, }; for (size_t i = 0; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) { simde_poly64x1x4_t val = {{ simde_vld1_p64(test_vec[i].val[0]), simde_vld1_p64(test_vec[i].val[1]), simde_vld1_p64(test_vec[i].val[2]), simde_vld1_p64(test_vec[i].val[3]), }}; simde_poly64_t r_[4]; simde_vst1_p64_x4(r_, val); simde_assert_equal_i(0, simde_memcmp(r_, test_vec[i].r, sizeof(test_vec[i].r))); } return 0; #else fputc('\n', stdout); for (int i = 0 ; i < 8 ; i++) { simde_poly64x4_t val[4] = simde_test_arm_neon_random_p64x4(); simde_poly64x4_t r = simde_vst1_p64_x4(val[4]); simde_test_arm_neon_write_p64x4(2, val[4], SIMDE_TEST_VEC_POS_FIRST); simde_test_arm_neon_write_p64x4(2, r, SIMDE_TEST_VEC_POS_LAST); } return 1; #endif } static int test_simde_vst1_bf16_x4 (SIMDE_MUNIT_TEST_ARGS) { #if 1 struct { simde_bfloat16 val[4][4]; simde_bfloat16 r[16]; } test_vec[] = { { { { SIMDE_BFLOAT16_VALUE( 82.328), SIMDE_BFLOAT16_VALUE( 70.920), SIMDE_BFLOAT16_VALUE( - 2.164), SIMDE_BFLOAT16_VALUE( 20.248) }, { SIMDE_BFLOAT16_VALUE( 17.827), SIMDE_BFLOAT16_VALUE( - 14.465), SIMDE_BFLOAT16_VALUE( - 88.806), SIMDE_BFLOAT16_VALUE( 79.077) }, { SIMDE_BFLOAT16_VALUE( 1.568), SIMDE_BFLOAT16_VALUE( - 20.954), SIMDE_BFLOAT16_VALUE( - 34.479), SIMDE_BFLOAT16_VALUE( - 40.339) }, { SIMDE_BFLOAT16_VALUE( 35.388), SIMDE_BFLOAT16_VALUE( 7.745), SIMDE_BFLOAT16_VALUE( 48.873), SIMDE_BFLOAT16_VALUE( - 89.095) } }, { SIMDE_BFLOAT16_VALUE( 82.328), SIMDE_BFLOAT16_VALUE( 70.920), SIMDE_BFLOAT16_VALUE( - 2.164), SIMDE_BFLOAT16_VALUE( 20.248), SIMDE_BFLOAT16_VALUE( 17.827), SIMDE_BFLOAT16_VALUE( - 14.465), SIMDE_BFLOAT16_VALUE( - 88.806), SIMDE_BFLOAT16_VALUE( 79.077), SIMDE_BFLOAT16_VALUE( 1.568), SIMDE_BFLOAT16_VALUE( - 20.954), SIMDE_BFLOAT16_VALUE( - 34.479), SIMDE_BFLOAT16_VALUE( - 40.339), SIMDE_BFLOAT16_VALUE( 35.388), SIMDE_BFLOAT16_VALUE( 7.745), SIMDE_BFLOAT16_VALUE( 48.873), SIMDE_BFLOAT16_VALUE( - 89.095) } }, { { { SIMDE_BFLOAT16_VALUE( - 85.226), SIMDE_BFLOAT16_VALUE( 68.050), SIMDE_BFLOAT16_VALUE( - 79.246), SIMDE_BFLOAT16_VALUE( - 6.999) }, { SIMDE_BFLOAT16_VALUE( - 57.697), SIMDE_BFLOAT16_VALUE( - 37.357), SIMDE_BFLOAT16_VALUE( - 77.997), SIMDE_BFLOAT16_VALUE( - 49.541) }, { SIMDE_BFLOAT16_VALUE( - 97.845), SIMDE_BFLOAT16_VALUE( - 58.594), SIMDE_BFLOAT16_VALUE( 49.242), SIMDE_BFLOAT16_VALUE( 38.316) }, { SIMDE_BFLOAT16_VALUE( - 4.874), SIMDE_BFLOAT16_VALUE( 31.136), SIMDE_BFLOAT16_VALUE( 51.676), SIMDE_BFLOAT16_VALUE( - 89.351) } }, { SIMDE_BFLOAT16_VALUE( - 85.226), SIMDE_BFLOAT16_VALUE( 68.050), SIMDE_BFLOAT16_VALUE( - 79.246), SIMDE_BFLOAT16_VALUE( - 6.999), SIMDE_BFLOAT16_VALUE( - 57.697), SIMDE_BFLOAT16_VALUE( - 37.357), SIMDE_BFLOAT16_VALUE( - 77.997), SIMDE_BFLOAT16_VALUE( - 49.541), SIMDE_BFLOAT16_VALUE( - 97.845), SIMDE_BFLOAT16_VALUE( - 58.594), SIMDE_BFLOAT16_VALUE( 49.242), SIMDE_BFLOAT16_VALUE( 38.316), SIMDE_BFLOAT16_VALUE( - 4.874), SIMDE_BFLOAT16_VALUE( 31.136), SIMDE_BFLOAT16_VALUE( 51.676), SIMDE_BFLOAT16_VALUE( - 89.351) } }, { { { SIMDE_BFLOAT16_VALUE( - 30.265), SIMDE_BFLOAT16_VALUE( - 14.175), SIMDE_BFLOAT16_VALUE( 36.709), SIMDE_BFLOAT16_VALUE( 19.621) }, { SIMDE_BFLOAT16_VALUE( 43.887), SIMDE_BFLOAT16_VALUE( - 72.313), SIMDE_BFLOAT16_VALUE( 75.465), SIMDE_BFLOAT16_VALUE( - 60.500) }, { SIMDE_BFLOAT16_VALUE( - 4.007), SIMDE_BFLOAT16_VALUE( 97.670), SIMDE_BFLOAT16_VALUE( - 48.236), SIMDE_BFLOAT16_VALUE( 41.558) }, { SIMDE_BFLOAT16_VALUE( - 87.828), SIMDE_BFLOAT16_VALUE( 55.865), SIMDE_BFLOAT16_VALUE( 40.049), SIMDE_BFLOAT16_VALUE( - 99.926) } }, { SIMDE_BFLOAT16_VALUE( - 30.265), SIMDE_BFLOAT16_VALUE( - 14.175), SIMDE_BFLOAT16_VALUE( 36.709), SIMDE_BFLOAT16_VALUE( 19.621), SIMDE_BFLOAT16_VALUE( 43.887), SIMDE_BFLOAT16_VALUE( - 72.313), SIMDE_BFLOAT16_VALUE( 75.465), SIMDE_BFLOAT16_VALUE( - 60.500), SIMDE_BFLOAT16_VALUE( - 4.007), SIMDE_BFLOAT16_VALUE( 97.670), SIMDE_BFLOAT16_VALUE( - 48.236), SIMDE_BFLOAT16_VALUE( 41.558), SIMDE_BFLOAT16_VALUE( - 87.828), SIMDE_BFLOAT16_VALUE( 55.865), SIMDE_BFLOAT16_VALUE( 40.049), SIMDE_BFLOAT16_VALUE( - 99.926) } }, { { { SIMDE_BFLOAT16_VALUE( - 44.272), SIMDE_BFLOAT16_VALUE( 10.085), SIMDE_BFLOAT16_VALUE( - 12.450), SIMDE_BFLOAT16_VALUE( 58.234) }, { SIMDE_BFLOAT16_VALUE( - 92.323), SIMDE_BFLOAT16_VALUE( - 72.811), SIMDE_BFLOAT16_VALUE( - 75.942), SIMDE_BFLOAT16_VALUE( - 33.709) }, { SIMDE_BFLOAT16_VALUE( - 54.556), SIMDE_BFLOAT16_VALUE( - 96.713), SIMDE_BFLOAT16_VALUE( - 44.482), SIMDE_BFLOAT16_VALUE( 86.965) }, { SIMDE_BFLOAT16_VALUE( 91.324), SIMDE_BFLOAT16_VALUE( - 40.202), SIMDE_BFLOAT16_VALUE( - 14.814), SIMDE_BFLOAT16_VALUE( 88.549) } }, { SIMDE_BFLOAT16_VALUE( - 44.272), SIMDE_BFLOAT16_VALUE( 10.085), SIMDE_BFLOAT16_VALUE( - 12.450), SIMDE_BFLOAT16_VALUE( 58.234), SIMDE_BFLOAT16_VALUE( - 92.323), SIMDE_BFLOAT16_VALUE( - 72.811), SIMDE_BFLOAT16_VALUE( - 75.942), SIMDE_BFLOAT16_VALUE( - 33.709), SIMDE_BFLOAT16_VALUE( - 54.556), SIMDE_BFLOAT16_VALUE( - 96.713), SIMDE_BFLOAT16_VALUE( - 44.482), SIMDE_BFLOAT16_VALUE( 86.965), SIMDE_BFLOAT16_VALUE( 91.324), SIMDE_BFLOAT16_VALUE( - 40.202), SIMDE_BFLOAT16_VALUE( - 14.814), SIMDE_BFLOAT16_VALUE( 88.549) } }, { { { SIMDE_BFLOAT16_VALUE( 2.562), SIMDE_BFLOAT16_VALUE( - 38.287), SIMDE_BFLOAT16_VALUE( - 35.816), SIMDE_BFLOAT16_VALUE( 15.466) }, { SIMDE_BFLOAT16_VALUE( 18.376), SIMDE_BFLOAT16_VALUE( - 90.001), SIMDE_BFLOAT16_VALUE( 64.324), SIMDE_BFLOAT16_VALUE( - 33.166) }, { SIMDE_BFLOAT16_VALUE( - 69.347), SIMDE_BFLOAT16_VALUE( 26.212), SIMDE_BFLOAT16_VALUE( - 90.466), SIMDE_BFLOAT16_VALUE( - 27.484) }, { SIMDE_BFLOAT16_VALUE( - 55.925), SIMDE_BFLOAT16_VALUE( - 34.864), SIMDE_BFLOAT16_VALUE( - 97.656), SIMDE_BFLOAT16_VALUE( - 7.985) } }, { SIMDE_BFLOAT16_VALUE( 2.562), SIMDE_BFLOAT16_VALUE( - 38.287), SIMDE_BFLOAT16_VALUE( - 35.816), SIMDE_BFLOAT16_VALUE( 15.466), SIMDE_BFLOAT16_VALUE( 18.376), SIMDE_BFLOAT16_VALUE( - 90.001), SIMDE_BFLOAT16_VALUE( 64.324), SIMDE_BFLOAT16_VALUE( - 33.166), SIMDE_BFLOAT16_VALUE( - 69.347), SIMDE_BFLOAT16_VALUE( 26.212), SIMDE_BFLOAT16_VALUE( - 90.466), SIMDE_BFLOAT16_VALUE( - 27.484), SIMDE_BFLOAT16_VALUE( - 55.925), SIMDE_BFLOAT16_VALUE( - 34.864), SIMDE_BFLOAT16_VALUE( - 97.656), SIMDE_BFLOAT16_VALUE( - 7.985) } }, { { { SIMDE_BFLOAT16_VALUE( 52.345), SIMDE_BFLOAT16_VALUE( - 67.483), SIMDE_BFLOAT16_VALUE( 35.701), SIMDE_BFLOAT16_VALUE( 91.753) }, { SIMDE_BFLOAT16_VALUE( 19.358), SIMDE_BFLOAT16_VALUE( - 88.690), SIMDE_BFLOAT16_VALUE( 47.635), SIMDE_BFLOAT16_VALUE( 8.845) }, { SIMDE_BFLOAT16_VALUE( - 20.974), SIMDE_BFLOAT16_VALUE( 4.303), SIMDE_BFLOAT16_VALUE( - 69.975), SIMDE_BFLOAT16_VALUE( - 29.454) }, { SIMDE_BFLOAT16_VALUE( 18.539), SIMDE_BFLOAT16_VALUE( 11.611), SIMDE_BFLOAT16_VALUE( - 30.865), SIMDE_BFLOAT16_VALUE( 45.777) } }, { SIMDE_BFLOAT16_VALUE( 52.345), SIMDE_BFLOAT16_VALUE( - 67.483), SIMDE_BFLOAT16_VALUE( 35.701), SIMDE_BFLOAT16_VALUE( 91.753), SIMDE_BFLOAT16_VALUE( 19.358), SIMDE_BFLOAT16_VALUE( - 88.690), SIMDE_BFLOAT16_VALUE( 47.635), SIMDE_BFLOAT16_VALUE( 8.845), SIMDE_BFLOAT16_VALUE( - 20.974), SIMDE_BFLOAT16_VALUE( 4.303), SIMDE_BFLOAT16_VALUE( - 69.975), SIMDE_BFLOAT16_VALUE( - 29.454), SIMDE_BFLOAT16_VALUE( 18.539), SIMDE_BFLOAT16_VALUE( 11.611), SIMDE_BFLOAT16_VALUE( - 30.865), SIMDE_BFLOAT16_VALUE( 45.777) } }, { { { SIMDE_BFLOAT16_VALUE( - 6.544), SIMDE_BFLOAT16_VALUE( 72.545), SIMDE_BFLOAT16_VALUE( - 38.100), SIMDE_BFLOAT16_VALUE( 66.147) }, { SIMDE_BFLOAT16_VALUE( - 39.990), SIMDE_BFLOAT16_VALUE( 59.395), SIMDE_BFLOAT16_VALUE( 58.133), SIMDE_BFLOAT16_VALUE( 62.227) }, { SIMDE_BFLOAT16_VALUE( 17.801), SIMDE_BFLOAT16_VALUE( 50.002), SIMDE_BFLOAT16_VALUE( 92.224), SIMDE_BFLOAT16_VALUE( - 44.924) }, { SIMDE_BFLOAT16_VALUE( 11.046), SIMDE_BFLOAT16_VALUE( 54.927), SIMDE_BFLOAT16_VALUE( - 65.414), SIMDE_BFLOAT16_VALUE( - 73.599) } }, { SIMDE_BFLOAT16_VALUE( - 6.544), SIMDE_BFLOAT16_VALUE( 72.545), SIMDE_BFLOAT16_VALUE( - 38.100), SIMDE_BFLOAT16_VALUE( 66.147), SIMDE_BFLOAT16_VALUE( - 39.990), SIMDE_BFLOAT16_VALUE( 59.395), SIMDE_BFLOAT16_VALUE( 58.133), SIMDE_BFLOAT16_VALUE( 62.227), SIMDE_BFLOAT16_VALUE( 17.801), SIMDE_BFLOAT16_VALUE( 50.002), SIMDE_BFLOAT16_VALUE( 92.224), SIMDE_BFLOAT16_VALUE( - 44.924), SIMDE_BFLOAT16_VALUE( 11.046), SIMDE_BFLOAT16_VALUE( 54.927), SIMDE_BFLOAT16_VALUE( - 65.414), SIMDE_BFLOAT16_VALUE( - 73.599) } }, { { { SIMDE_BFLOAT16_VALUE( - 96.039), SIMDE_BFLOAT16_VALUE( 20.111), SIMDE_BFLOAT16_VALUE( - 49.906), SIMDE_BFLOAT16_VALUE( - 73.928) }, { SIMDE_BFLOAT16_VALUE( 70.164), SIMDE_BFLOAT16_VALUE( 52.349), SIMDE_BFLOAT16_VALUE( 46.465), SIMDE_BFLOAT16_VALUE( 59.387) }, { SIMDE_BFLOAT16_VALUE( - 74.522), SIMDE_BFLOAT16_VALUE( - 64.090), SIMDE_BFLOAT16_VALUE( - 64.099), SIMDE_BFLOAT16_VALUE( 19.591) }, { SIMDE_BFLOAT16_VALUE( 39.551), SIMDE_BFLOAT16_VALUE( - 75.560), SIMDE_BFLOAT16_VALUE( - 12.722), SIMDE_BFLOAT16_VALUE( - 45.531) } }, { SIMDE_BFLOAT16_VALUE( - 96.039), SIMDE_BFLOAT16_VALUE( 20.111), SIMDE_BFLOAT16_VALUE( - 49.906), SIMDE_BFLOAT16_VALUE( - 73.928), SIMDE_BFLOAT16_VALUE( 70.164), SIMDE_BFLOAT16_VALUE( 52.349), SIMDE_BFLOAT16_VALUE( 46.465), SIMDE_BFLOAT16_VALUE( 59.387), SIMDE_BFLOAT16_VALUE( - 74.522), SIMDE_BFLOAT16_VALUE( - 64.090), SIMDE_BFLOAT16_VALUE( - 64.099), SIMDE_BFLOAT16_VALUE( 19.591), SIMDE_BFLOAT16_VALUE( 39.551), SIMDE_BFLOAT16_VALUE( - 75.560), SIMDE_BFLOAT16_VALUE( - 12.722), SIMDE_BFLOAT16_VALUE( - 45.531) } }, }; for (size_t i = 0; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) { simde_bfloat16x4x4_t val = {{ simde_vld1_bf16(test_vec[i].val[0]), simde_vld1_bf16(test_vec[i].val[1]), simde_vld1_bf16(test_vec[i].val[2]), simde_vld1_bf16(test_vec[i].val[3]), }}; simde_bfloat16 r_[16]; simde_vst1_bf16_x4(r_, val); simde_assert_equal_i(0, simde_memcmp(r_, test_vec[i].r, sizeof(test_vec[i].r))); } return 0; #else fputc('\n', stdout); for (int i = 0 ; i < 8 ; i++) { simde_bfloat16x4_t val[4] = simde_test_arm_neon_random_bf16x4(-100.0f, 100.0f); simde_bfloat16x16_t r = simde_vst1_bf16_x4(val[4]); simde_test_arm_neon_write_bf16x4(2, val[4], SIMDE_TEST_VEC_POS_FIRST); simde_test_arm_neon_write_bf16x16(2, r, 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(vst1_f16_x4) SIMDE_TEST_FUNC_LIST_ENTRY(vst1_f32_x4) SIMDE_TEST_FUNC_LIST_ENTRY(vst1_f64_x4) SIMDE_TEST_FUNC_LIST_ENTRY(vst1_s8_x4) SIMDE_TEST_FUNC_LIST_ENTRY(vst1_s16_x4) SIMDE_TEST_FUNC_LIST_ENTRY(vst1_s32_x4) SIMDE_TEST_FUNC_LIST_ENTRY(vst1_s64_x4) SIMDE_TEST_FUNC_LIST_ENTRY(vst1_u8_x4) SIMDE_TEST_FUNC_LIST_ENTRY(vst1_u16_x4) SIMDE_TEST_FUNC_LIST_ENTRY(vst1_u32_x4) SIMDE_TEST_FUNC_LIST_ENTRY(vst1_u64_x4) SIMDE_TEST_FUNC_LIST_ENTRY(vst1_p8_x4) SIMDE_TEST_FUNC_LIST_ENTRY(vst1_p16_x4) SIMDE_TEST_FUNC_LIST_ENTRY(vst1_p64_x4) SIMDE_TEST_FUNC_LIST_ENTRY(vst1_bf16_x4) #endif /* !defined(SIMDE_BUG_INTEL_857088) */ SIMDE_TEST_FUNC_LIST_END #include "test-neon-footer.h"