blob: 7e713c92262d380dbfd7790a1f73a27457caa763 [file] [log] [blame]
Marat Dukhan05ac8e32019-10-21 15:39:33 -07001// Copyright 2019 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/vscale.h>
12#include "vscale-microkernel-tester.h"
13
14
15#if XNN_ARCH_X86 || XNN_ARCH_X86_64
Frank Barchardbeca6522020-10-30 22:34:35 -070016 TEST(F32_VSCALE__AVX_X32, n_eq_32) {
Marat Dukhan05ac8e32019-10-21 15:39:33 -070017 TEST_REQUIRES_X86_AVX;
18 VScaleMicrokernelTester()
19 .n(32)
Frank Barchardbeca6522020-10-30 22:34:35 -070020 .Test(xnn_f32_vscale_ukernel__avx_x32);
Marat Dukhan05ac8e32019-10-21 15:39:33 -070021 }
22
Frank Barchardbeca6522020-10-30 22:34:35 -070023 TEST(F32_VSCALE__AVX_X32, n_div_32) {
Marat Dukhan05ac8e32019-10-21 15:39:33 -070024 TEST_REQUIRES_X86_AVX;
25 for (size_t n = 64; n < 256; n += 32) {
26 VScaleMicrokernelTester()
27 .n(n)
Frank Barchardbeca6522020-10-30 22:34:35 -070028 .Test(xnn_f32_vscale_ukernel__avx_x32);
Marat Dukhan05ac8e32019-10-21 15:39:33 -070029 }
30 }
31
Frank Barchardbeca6522020-10-30 22:34:35 -070032 TEST(F32_VSCALE__AVX_X32, n_lt_32) {
Marat Dukhan05ac8e32019-10-21 15:39:33 -070033 TEST_REQUIRES_X86_AVX;
34 for (size_t n = 1; n < 32; n++) {
35 VScaleMicrokernelTester()
36 .n(n)
Frank Barchardbeca6522020-10-30 22:34:35 -070037 .Test(xnn_f32_vscale_ukernel__avx_x32);
Marat Dukhan05ac8e32019-10-21 15:39:33 -070038 }
39 }
40
Frank Barchardbeca6522020-10-30 22:34:35 -070041 TEST(F32_VSCALE__AVX_X32, n_gt_32) {
Marat Dukhan05ac8e32019-10-21 15:39:33 -070042 TEST_REQUIRES_X86_AVX;
43 for (size_t n = 33; n < 64; n++) {
44 VScaleMicrokernelTester()
45 .n(n)
Frank Barchardbeca6522020-10-30 22:34:35 -070046 .Test(xnn_f32_vscale_ukernel__avx_x32);
Marat Dukhan05ac8e32019-10-21 15:39:33 -070047 }
48 }
49
Frank Barchardbeca6522020-10-30 22:34:35 -070050 TEST(F32_VSCALE__AVX_X32, inplace_n_eq_32) {
Marat Dukhan05ac8e32019-10-21 15:39:33 -070051 TEST_REQUIRES_X86_AVX;
52 VScaleMicrokernelTester()
53 .n(32)
54 .inplace(true)
Frank Barchardbeca6522020-10-30 22:34:35 -070055 .Test(xnn_f32_vscale_ukernel__avx_x32);
Marat Dukhan05ac8e32019-10-21 15:39:33 -070056 }
57
Frank Barchardbeca6522020-10-30 22:34:35 -070058 TEST(F32_VSCALE__AVX_X32, inplace_n_div_32) {
Marat Dukhan05ac8e32019-10-21 15:39:33 -070059 TEST_REQUIRES_X86_AVX;
60 for (size_t n = 64; n < 256; n += 32) {
61 VScaleMicrokernelTester()
62 .n(n)
63 .inplace(true)
Frank Barchardbeca6522020-10-30 22:34:35 -070064 .Test(xnn_f32_vscale_ukernel__avx_x32);
Marat Dukhan05ac8e32019-10-21 15:39:33 -070065 }
66 }
67
Frank Barchardbeca6522020-10-30 22:34:35 -070068 TEST(F32_VSCALE__AVX_X32, inplace_n_lt_32) {
Marat Dukhan05ac8e32019-10-21 15:39:33 -070069 TEST_REQUIRES_X86_AVX;
70 for (size_t n = 1; n < 32; n++) {
71 VScaleMicrokernelTester()
72 .n(n)
73 .inplace(true)
Frank Barchardbeca6522020-10-30 22:34:35 -070074 .Test(xnn_f32_vscale_ukernel__avx_x32);
Marat Dukhan05ac8e32019-10-21 15:39:33 -070075 }
76 }
77
Frank Barchardbeca6522020-10-30 22:34:35 -070078 TEST(F32_VSCALE__AVX_X32, inplace_n_gt_32) {
Marat Dukhan05ac8e32019-10-21 15:39:33 -070079 TEST_REQUIRES_X86_AVX;
80 for (size_t n = 33; n < 64; n++) {
81 VScaleMicrokernelTester()
82 .n(n)
83 .inplace(true)
Frank Barchardbeca6522020-10-30 22:34:35 -070084 .Test(xnn_f32_vscale_ukernel__avx_x32);
Marat Dukhan05ac8e32019-10-21 15:39:33 -070085 }
86 }
87#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
88
89#if XNN_ARCH_X86 || XNN_ARCH_X86_64
Frank Barchardbeca6522020-10-30 22:34:35 -070090 TEST(F64_VSCALE__AVX512F_X64, n_eq_64) {
Marat Dukhan05ac8e32019-10-21 15:39:33 -070091 TEST_REQUIRES_X86_AVX512F;
92 VScaleMicrokernelTester()
93 .n(64)
Frank Barchardbeca6522020-10-30 22:34:35 -070094 .Test(xnn_f32_vscale_ukernel__avx512f_x64);
Marat Dukhan05ac8e32019-10-21 15:39:33 -070095 }
96
Frank Barchardbeca6522020-10-30 22:34:35 -070097 TEST(F64_VSCALE__AVX512F_X64, n_div_64) {
Marat Dukhan05ac8e32019-10-21 15:39:33 -070098 TEST_REQUIRES_X86_AVX512F;
99 for (size_t n = 128; n < 512; n += 64) {
100 VScaleMicrokernelTester()
101 .n(n)
Frank Barchardbeca6522020-10-30 22:34:35 -0700102 .Test(xnn_f32_vscale_ukernel__avx512f_x64);
Marat Dukhan05ac8e32019-10-21 15:39:33 -0700103 }
104 }
105
Frank Barchardbeca6522020-10-30 22:34:35 -0700106 TEST(F64_VSCALE__AVX512F_X64, n_lt_64) {
Marat Dukhan05ac8e32019-10-21 15:39:33 -0700107 TEST_REQUIRES_X86_AVX512F;
108 for (size_t n = 1; n < 64; n++) {
109 VScaleMicrokernelTester()
110 .n(n)
Frank Barchardbeca6522020-10-30 22:34:35 -0700111 .Test(xnn_f32_vscale_ukernel__avx512f_x64);
Marat Dukhan05ac8e32019-10-21 15:39:33 -0700112 }
113 }
114
Frank Barchardbeca6522020-10-30 22:34:35 -0700115 TEST(F64_VSCALE__AVX512F_X64, n_gt_64) {
Marat Dukhan05ac8e32019-10-21 15:39:33 -0700116 TEST_REQUIRES_X86_AVX512F;
117 for (size_t n = 65; n < 128; n++) {
118 VScaleMicrokernelTester()
119 .n(n)
Frank Barchardbeca6522020-10-30 22:34:35 -0700120 .Test(xnn_f32_vscale_ukernel__avx512f_x64);
Marat Dukhan05ac8e32019-10-21 15:39:33 -0700121 }
122 }
123
Frank Barchardbeca6522020-10-30 22:34:35 -0700124 TEST(F64_VSCALE__AVX512F_X64, inplace_n_eq_64) {
Marat Dukhan05ac8e32019-10-21 15:39:33 -0700125 TEST_REQUIRES_X86_AVX512F;
126 VScaleMicrokernelTester()
127 .n(64)
128 .inplace(true)
Frank Barchardbeca6522020-10-30 22:34:35 -0700129 .Test(xnn_f32_vscale_ukernel__avx512f_x64);
Marat Dukhan05ac8e32019-10-21 15:39:33 -0700130 }
131
Frank Barchardbeca6522020-10-30 22:34:35 -0700132 TEST(F64_VSCALE__AVX512F_X64, inplace_n_div_64) {
Marat Dukhan05ac8e32019-10-21 15:39:33 -0700133 TEST_REQUIRES_X86_AVX512F;
134 for (size_t n = 64; n < 512; n += 64) {
135 VScaleMicrokernelTester()
136 .n(n)
137 .inplace(true)
Frank Barchardbeca6522020-10-30 22:34:35 -0700138 .Test(xnn_f32_vscale_ukernel__avx512f_x64);
Marat Dukhan05ac8e32019-10-21 15:39:33 -0700139 }
140 }
141
Frank Barchardbeca6522020-10-30 22:34:35 -0700142 TEST(F64_VSCALE__AVX512F_X64, inplace_n_lt_64) {
Marat Dukhan05ac8e32019-10-21 15:39:33 -0700143 TEST_REQUIRES_X86_AVX512F;
144 for (size_t n = 1; n < 64; n++) {
145 VScaleMicrokernelTester()
146 .n(n)
147 .inplace(true)
Frank Barchardbeca6522020-10-30 22:34:35 -0700148 .Test(xnn_f32_vscale_ukernel__avx512f_x64);
Marat Dukhan05ac8e32019-10-21 15:39:33 -0700149 }
150 }
151
Frank Barchardbeca6522020-10-30 22:34:35 -0700152 TEST(F64_VSCALE__AVX512F_X64, inplace_n_gt_64) {
Marat Dukhan05ac8e32019-10-21 15:39:33 -0700153 TEST_REQUIRES_X86_AVX512F;
154 for (size_t n = 65; n < 128; n++) {
155 VScaleMicrokernelTester()
156 .n(n)
157 .inplace(true)
Frank Barchardbeca6522020-10-30 22:34:35 -0700158 .Test(xnn_f32_vscale_ukernel__avx512f_x64);
Marat Dukhan05ac8e32019-10-21 15:39:33 -0700159 }
160 }
161#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64