blob: 8f6b03f6ba64364f6cef8c88a2f0982d61dd2b06 [file] [log] [blame]
XNNPACK Teamb455b122019-09-27 18:10:33 -07001// Copyright (c) Facebook, Inc. and its affiliates.
2// All rights reserved.
3//
4// Copyright 2019 Google LLC
5//
6// This source code is licensed under the BSD-style license found in the
7// LICENSE file in the root directory of this source tree.
8
XNNPACK Teamb455b122019-09-27 18:10:33 -07009#include <gtest/gtest.h>
10
Marat Dukhan1dadbf72019-10-01 10:46:20 -070011#include <xnnpack/common.h>
XNNPACK Teamb455b122019-09-27 18:10:33 -070012#include <xnnpack/isa-checks.h>
XNNPACK Teamb455b122019-09-27 18:10:33 -070013
Marat Dukhan1dadbf72019-10-01 10:46:20 -070014#include <xnnpack/rmax.h>
XNNPACK Teamb455b122019-09-27 18:10:33 -070015#include "rmax-microkernel-tester.h"
16
17
Marat Dukhan1dadbf72019-10-01 10:46:20 -070018#if XNN_ARCH_ARM || XNN_ARCH_ARM64
XNNPACK Teamb455b122019-09-27 18:10:33 -070019 TEST(U8RMAX__NEON, n_lt_16) {
20 TEST_REQUIRES_ARM_NEON;
21 for (size_t n = 1; n < 16; n++) {
22 RMaxMicrokernelTester()
23 .n(n)
24 .Test(xnn_u8_rmax_ukernel__neon);
25 }
26 }
27
28 TEST(U8RMAX__NEON, n_eq_16) {
29 TEST_REQUIRES_ARM_NEON;
30 RMaxMicrokernelTester()
31 .n(16)
32 .Test(xnn_u8_rmax_ukernel__neon);
33 }
34
35 TEST(U8RMAX__NEON, n_div_16) {
36 TEST_REQUIRES_ARM_NEON;
37 for (size_t n = 16; n < 128; n += 16) {
38 RMaxMicrokernelTester()
39 .n(n)
40 .Test(xnn_u8_rmax_ukernel__neon);
41 }
42 }
43
44 TEST(U8RMAX__NEON, n_gt_16) {
45 TEST_REQUIRES_ARM_NEON;
46 for (size_t n = 16; n < 32; n++) {
47 RMaxMicrokernelTester()
48 .n(n)
49 .Test(xnn_u8_rmax_ukernel__neon);
50 }
51 }
Marat Dukhan1dadbf72019-10-01 10:46:20 -070052#endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
XNNPACK Teamb455b122019-09-27 18:10:33 -070053
Marat Dukhan1dadbf72019-10-01 10:46:20 -070054#if XNN_ARCH_X86 || XNN_ARCH_X86_64
XNNPACK Teamb455b122019-09-27 18:10:33 -070055 TEST(U8RMAX__SSE2, n_lt_16) {
56 TEST_REQUIRES_X86_SSE2;
57 for (size_t n = 1; n < 16; n++) {
58 RMaxMicrokernelTester()
59 .n(n)
60 .Test(xnn_u8_rmax_ukernel__sse2);
61 }
62 }
63
64 TEST(U8RMAX__SSE2, n_eq_16) {
65 TEST_REQUIRES_X86_SSE2;
66 RMaxMicrokernelTester()
67 .n(16)
68 .Test(xnn_u8_rmax_ukernel__sse2);
69 }
70
71 TEST(U8RMAX__SSE2, n_div_16) {
72 TEST_REQUIRES_X86_SSE2;
73 for (size_t n = 16; n < 128; n += 16) {
74 RMaxMicrokernelTester()
75 .n(n)
76 .Test(xnn_u8_rmax_ukernel__sse2);
77 }
78 }
79
80 TEST(U8RMAX__SSE2, n_gt_16) {
81 TEST_REQUIRES_X86_SSE2;
82 for (size_t n = 17; n < 32; n++) {
83 RMaxMicrokernelTester()
84 .n(n)
85 .Test(xnn_u8_rmax_ukernel__sse2);
86 }
87 }
Marat Dukhan1dadbf72019-10-01 10:46:20 -070088#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
XNNPACK Teamb455b122019-09-27 18:10:33 -070089
90TEST(U8RMAX__SCALAR, n_lt_2) {
91 for (size_t n = 1; n < 2; n++) {
92 RMaxMicrokernelTester()
93 .n(n)
94 .Test(xnn_u8_rmax_ukernel__scalar);
95 }
96}
97
98TEST(U8RMAX__SCALAR, n_eq_2) {
99 RMaxMicrokernelTester()
100 .n(2)
101 .Test(xnn_u8_rmax_ukernel__scalar);
102}
103
104TEST(U8RMAX__SCALAR, n_div_2) {
105 for (size_t n = 2; n < 16; n += 2) {
106 RMaxMicrokernelTester()
107 .n(n)
108 .Test(xnn_u8_rmax_ukernel__scalar);
109 }
110}
111
112TEST(U8RMAX__SCALAR, n_gt_2) {
113 for (size_t n = 3; n < 4; n++) {
114 RMaxMicrokernelTester()
115 .n(n)
116 .Test(xnn_u8_rmax_ukernel__scalar);
117 }
118}