1 // Copyright 2022 Google LLC 2 // 3 // This source code is licensed under the BSD-style license found in the 4 // LICENSE file in the root directory of this source tree. 5 6 #include <gtest/gtest.h> 7 8 #include <xnnpack/common.h> 9 #include <xnnpack/isa-checks.h> 10 11 #include <xnnpack/rmax.h> 12 #include "rmax-microkernel-tester.h" 13 14 15 #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) TEST(F16_RMAX__NEONFP16ARITH,n_lt_32)16 TEST(F16_RMAX__NEONFP16ARITH, n_lt_32) { 17 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 18 for (size_t n = 1; n < 32; n++) { 19 RMaxMicrokernelTester() 20 .n(n) 21 .Test(xnn_f16_rmax_ukernel__neonfp16arith); 22 } 23 } 24 TEST(F16_RMAX__NEONFP16ARITH,n_eq_32)25 TEST(F16_RMAX__NEONFP16ARITH, n_eq_32) { 26 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 27 RMaxMicrokernelTester() 28 .n(32) 29 .Test(xnn_f16_rmax_ukernel__neonfp16arith); 30 } 31 TEST(F16_RMAX__NEONFP16ARITH,n_div_32)32 TEST(F16_RMAX__NEONFP16ARITH, n_div_32) { 33 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 34 for (size_t n = 64; n <= 128; n += 32) { 35 RMaxMicrokernelTester() 36 .n(n) 37 .Test(xnn_f16_rmax_ukernel__neonfp16arith); 38 } 39 } 40 TEST(F16_RMAX__NEONFP16ARITH,n_gt_32)41 TEST(F16_RMAX__NEONFP16ARITH, n_gt_32) { 42 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 43 for (size_t n = 32; n < 64; n++) { 44 RMaxMicrokernelTester() 45 .n(n) 46 .Test(xnn_f16_rmax_ukernel__neonfp16arith); 47 } 48 } 49 #endif // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) 50 51 #if XNN_ARCH_X86 || XNN_ARCH_X86_64 TEST(F16_RMAX__F16C,n_lt_32)52 TEST(F16_RMAX__F16C, n_lt_32) { 53 TEST_REQUIRES_X86_F16C; 54 for (size_t n = 1; n < 32; n++) { 55 RMaxMicrokernelTester() 56 .n(n) 57 .Test(xnn_f16_rmax_ukernel__f16c); 58 } 59 } 60 TEST(F16_RMAX__F16C,n_eq_32)61 TEST(F16_RMAX__F16C, n_eq_32) { 62 TEST_REQUIRES_X86_F16C; 63 RMaxMicrokernelTester() 64 .n(32) 65 .Test(xnn_f16_rmax_ukernel__f16c); 66 } 67 TEST(F16_RMAX__F16C,n_div_32)68 TEST(F16_RMAX__F16C, n_div_32) { 69 TEST_REQUIRES_X86_F16C; 70 for (size_t n = 64; n <= 128; n += 32) { 71 RMaxMicrokernelTester() 72 .n(n) 73 .Test(xnn_f16_rmax_ukernel__f16c); 74 } 75 } 76 TEST(F16_RMAX__F16C,n_gt_32)77 TEST(F16_RMAX__F16C, n_gt_32) { 78 TEST_REQUIRES_X86_F16C; 79 for (size_t n = 32; n < 64; n++) { 80 RMaxMicrokernelTester() 81 .n(n) 82 .Test(xnn_f16_rmax_ukernel__f16c); 83 } 84 } 85 #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64 86