@@ -31585,21 +31585,205 @@ result_t test_vmuld_lane_f64(const NEON2RVV_TEST_IMPL &impl, uint32_t iter) {
31585
31585
#endif // ENABLE_TEST_ALL
31586
31586
}
31587
31587
31588
- result_t test_vmul_laneq_s16(const NEON2RVV_TEST_IMPL &impl, uint32_t iter) { return TEST_UNIMPL; }
31588
+ result_t test_vmul_laneq_s16(const NEON2RVV_TEST_IMPL &impl, uint32_t iter) {
31589
+ #ifdef ENABLE_TEST_ALL
31590
+ const int16_t *_a = (int16_t *)impl.test_cases_int_pointer1;
31591
+ const int16_t *_b = (int16_t *)impl.test_cases_int_pointer2;
31592
+ int16_t _c[4];
31593
+ int16x4_t a = vld1_s16(_a);
31594
+ int16x8_t b = vld1q_s16(_b);
31595
+ int16x4_t c;
31596
+
31597
+ #define TEST_IMPL(IDX) \
31598
+ for (int i = 0; i < 4; i++) { \
31599
+ _c[i] = _a[i] * _b[IDX]; \
31600
+ } \
31601
+ c = vmul_laneq_s16(a, b, IDX); \
31602
+ CHECK_RESULT(validate_int16(c, _c[0], _c[1], _c[2], _c[3]))
31603
+
31604
+ IMM_8_ITER
31605
+ #undef TEST_IMPL
31606
+
31607
+ return TEST_SUCCESS;
31608
+ #else
31609
+ return TEST_UNIMPL;
31610
+ #endif // ENABLE_TEST_ALL
31611
+ }
31612
+
31613
+ result_t test_vmulq_laneq_s16(const NEON2RVV_TEST_IMPL &impl, uint32_t iter) {
31614
+ #ifdef ENABLE_TEST_ALL
31615
+ const int16_t *_a = (int16_t *)impl.test_cases_int_pointer1;
31616
+ const int16_t *_b = (int16_t *)impl.test_cases_int_pointer2;
31617
+ int16_t _c[8];
31618
+ int16x8_t a = vld1q_s16(_a);
31619
+ int16x8_t b = vld1q_s16(_b);
31620
+ int16x8_t c;
31621
+
31622
+ #define TEST_IMPL(IDX) \
31623
+ for (int i = 0; i < 8; i++) { \
31624
+ _c[i] = _a[i] * _b[IDX]; \
31625
+ } \
31626
+ c = vmulq_laneq_s16(a, b, IDX); \
31627
+ CHECK_RESULT(validate_int16(c, _c[0], _c[1], _c[2], _c[3], _c[4], _c[5], _c[6], _c[7]))
31628
+
31629
+ IMM_8_ITER
31630
+ #undef TEST_IMPL
31631
+
31632
+ return TEST_SUCCESS;
31633
+ #else
31634
+ return TEST_UNIMPL;
31635
+ #endif // ENABLE_TEST_ALL
31636
+ }
31637
+
31638
+ result_t test_vmul_laneq_s32(const NEON2RVV_TEST_IMPL &impl, uint32_t iter) {
31639
+ #ifdef ENABLE_TEST_ALL
31640
+ const int32_t *_a = (int32_t *)impl.test_cases_int_pointer1;
31641
+ const int32_t *_b = (int32_t *)impl.test_cases_int_pointer2;
31642
+ int32_t _c[2];
31643
+ int32x2_t a = vld1_s32(_a);
31644
+ int32x4_t b = vld1q_s32(_b);
31645
+ int32x2_t c;
31646
+
31647
+ #define TEST_IMPL(IDX) \
31648
+ for (int i = 0; i < 2; i++) { \
31649
+ _c[i] = _a[i] * _b[IDX]; \
31650
+ } \
31651
+ c = vmul_laneq_s32(a, b, IDX); \
31652
+ CHECK_RESULT(validate_int32(c, _c[0], _c[1]))
31653
+
31654
+ IMM_4_ITER
31655
+ #undef TEST_IMPL
31656
+
31657
+ return TEST_SUCCESS;
31658
+ #else
31659
+ return TEST_UNIMPL;
31660
+ #endif // ENABLE_TEST_ALL
31661
+ }
31662
+
31663
+ result_t test_vmulq_laneq_s32(const NEON2RVV_TEST_IMPL &impl, uint32_t iter) {
31664
+ #ifdef ENABLE_TEST_ALL
31665
+ const int32_t *_a = (int32_t *)impl.test_cases_int_pointer1;
31666
+ const int32_t *_b = (int32_t *)impl.test_cases_int_pointer2;
31667
+ int32_t _c[4];
31668
+ int32x4_t a = vld1q_s32(_a);
31669
+ int32x4_t b = vld1q_s32(_b);
31670
+ int32x4_t c;
31671
+
31672
+ #define TEST_IMPL(IDX) \
31673
+ for (int i = 0; i < 4; i++) { \
31674
+ _c[i] = _a[i] * _b[IDX]; \
31675
+ } \
31676
+ c = vmulq_laneq_s32(a, b, IDX); \
31677
+ CHECK_RESULT(validate_int32(c, _c[0], _c[1], _c[2], _c[3]))
31678
+
31679
+ IMM_4_ITER
31680
+ #undef TEST_IMPL
31681
+
31682
+ return TEST_SUCCESS;
31683
+ #else
31684
+ return TEST_UNIMPL;
31685
+ #endif // ENABLE_TEST_ALL
31686
+ }
31687
+
31688
+ result_t test_vmul_laneq_u16(const NEON2RVV_TEST_IMPL &impl, uint32_t iter) {
31689
+ #ifdef ENABLE_TEST_ALL
31690
+ const uint16_t *_a = (uint16_t *)impl.test_cases_int_pointer1;
31691
+ const uint16_t *_b = (uint16_t *)impl.test_cases_int_pointer2;
31692
+ uint16_t _c[4];
31693
+ uint16x4_t a = vld1_u16(_a);
31694
+ uint16x8_t b = vld1q_u16(_b);
31695
+ uint16x4_t c;
31696
+
31697
+ #define TEST_IMPL(IDX) \
31698
+ for (int i = 0; i < 4; i++) { \
31699
+ _c[i] = _a[i] * _b[IDX]; \
31700
+ } \
31701
+ c = vmul_laneq_u16(a, b, IDX); \
31702
+ CHECK_RESULT(validate_uint16(c, _c[0], _c[1], _c[2], _c[3]))
31703
+
31704
+ IMM_8_ITER
31705
+ #undef TEST_IMPL
31706
+
31707
+ return TEST_SUCCESS;
31708
+ #else
31709
+ return TEST_UNIMPL;
31710
+ #endif // ENABLE_TEST_ALL
31711
+ }
31712
+
31713
+ result_t test_vmulq_laneq_u16(const NEON2RVV_TEST_IMPL &impl, uint32_t iter) {
31714
+ #ifdef ENABLE_TEST_ALL
31715
+ const uint16_t *_a = (uint16_t *)impl.test_cases_int_pointer1;
31716
+ const uint16_t *_b = (uint16_t *)impl.test_cases_int_pointer2;
31717
+ uint16_t _c[8];
31718
+ uint16x8_t a = vld1q_u16(_a);
31719
+ uint16x8_t b = vld1q_u16(_b);
31720
+ uint16x8_t c;
31721
+
31722
+ #define TEST_IMPL(IDX) \
31723
+ for (int i = 0; i < 8; i++) { \
31724
+ _c[i] = _a[i] * _b[IDX]; \
31725
+ } \
31726
+ c = vmulq_laneq_u16(a, b, IDX); \
31727
+ CHECK_RESULT(validate_uint16(c, _c[0], _c[1], _c[2], _c[3], _c[4], _c[5], _c[6], _c[7]))
31728
+
31729
+ IMM_8_ITER
31730
+ #undef TEST_IMPL
31731
+
31732
+ return TEST_SUCCESS;
31733
+ #else
31734
+ return TEST_UNIMPL;
31735
+ #endif // ENABLE_TEST_ALL
31736
+ }
31737
+
31738
+ result_t test_vmul_laneq_u32(const NEON2RVV_TEST_IMPL &impl, uint32_t iter) {
31739
+ #ifdef ENABLE_TEST_ALL
31740
+ const uint32_t *_a = (uint32_t *)impl.test_cases_int_pointer1;
31741
+ const uint32_t *_b = (uint32_t *)impl.test_cases_int_pointer2;
31742
+ uint32_t _c[2];
31743
+ uint32x2_t a = vld1_u32(_a);
31744
+ uint32x4_t b = vld1q_u32(_b);
31745
+ uint32x2_t c;
31589
31746
31590
- result_t test_vmulq_laneq_s16(const NEON2RVV_TEST_IMPL &impl, uint32_t iter) { return TEST_UNIMPL; }
31747
+ #define TEST_IMPL(IDX) \
31748
+ for (int i = 0; i < 2; i++) { \
31749
+ _c[i] = _a[i] * _b[IDX]; \
31750
+ } \
31751
+ c = vmul_laneq_u32(a, b, IDX); \
31752
+ CHECK_RESULT(validate_uint32(c, _c[0], _c[1]))
31591
31753
31592
- result_t test_vmul_laneq_s32(const NEON2RVV_TEST_IMPL &impl, uint32_t iter) { return TEST_UNIMPL; }
31754
+ IMM_4_ITER
31755
+ #undef TEST_IMPL
31593
31756
31594
- result_t test_vmulq_laneq_s32(const NEON2RVV_TEST_IMPL &impl, uint32_t iter) { return TEST_UNIMPL; }
31757
+ return TEST_SUCCESS;
31758
+ #else
31759
+ return TEST_UNIMPL;
31760
+ #endif // ENABLE_TEST_ALL
31761
+ }
31595
31762
31596
- result_t test_vmul_laneq_u16(const NEON2RVV_TEST_IMPL &impl, uint32_t iter) { return TEST_UNIMPL; }
31763
+ result_t test_vmulq_laneq_u32(const NEON2RVV_TEST_IMPL &impl, uint32_t iter) {
31764
+ #ifdef ENABLE_TEST_ALL
31765
+ const uint32_t *_a = (uint32_t *)impl.test_cases_int_pointer1;
31766
+ const uint32_t *_b = (uint32_t *)impl.test_cases_int_pointer2;
31767
+ uint32_t _c[4];
31768
+ uint32x4_t a = vld1q_u32(_a);
31769
+ uint32x4_t b = vld1q_u32(_b);
31770
+ uint32x4_t c;
31597
31771
31598
- result_t test_vmulq_laneq_u16(const NEON2RVV_TEST_IMPL &impl, uint32_t iter) { return TEST_UNIMPL; }
31772
+ #define TEST_IMPL(IDX) \
31773
+ for (int i = 0; i < 4; i++) { \
31774
+ _c[i] = _a[i] * _b[IDX]; \
31775
+ } \
31776
+ c = vmulq_laneq_u32(a, b, IDX); \
31777
+ CHECK_RESULT(validate_uint32(c, _c[0], _c[1], _c[2], _c[3]))
31599
31778
31600
- result_t test_vmul_laneq_u32(const NEON2RVV_TEST_IMPL &impl, uint32_t iter) { return TEST_UNIMPL; }
31779
+ IMM_4_ITER
31780
+ #undef TEST_IMPL
31601
31781
31602
- result_t test_vmulq_laneq_u32(const NEON2RVV_TEST_IMPL &impl, uint32_t iter) { return TEST_UNIMPL; }
31782
+ return TEST_SUCCESS;
31783
+ #else
31784
+ return TEST_UNIMPL;
31785
+ #endif // ENABLE_TEST_ALL
31786
+ }
31603
31787
31604
31788
result_t test_vmul_laneq_f32(const NEON2RVV_TEST_IMPL &impl, uint32_t iter) {
31605
31789
#ifdef ENABLE_TEST_ALL
0 commit comments