1 /******************************************************************************* 2 * Copyright 2019-2020 Intel Corporation 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 *******************************************************************************/ 16 17 #define EPS 1e-5f 18 19 #define EXPAND_FORMATS(data, stat, diff) \ 20 memory::format_tag::data, memory::format_tag::stat, memory::format_tag::diff 21 22 #define PARAMS_NC(...) \ 23 test_lnorm_params_t { \ 24 EXPAND_FORMATS(ab, a, ab), __VA_ARGS__, EPS, false, dnnl_success \ 25 } 26 27 #define PARAMS_TNC(...) \ 28 test_lnorm_params_t { \ 29 EXPAND_FORMATS(abc, ab, abc), __VA_ARGS__, EPS, false, dnnl_success \ 30 } 31 32 #define PARAMS_TNC_CROSS_CASE(...) \ 33 test_lnorm_params_t { \ 34 EXPAND_FORMATS(abc, ba, abc), __VA_ARGS__, EPS, false, dnnl_success \ 35 } 36 37 #define PARAMS_NTC(...) \ 38 test_lnorm_params_t { \ 39 EXPAND_FORMATS(bac, ba, bac), __VA_ARGS__, EPS, false, dnnl_success \ 40 } 41 42 #define PARAMS_LDSNC(...) \ 43 test_lnorm_params_t { \ 44 EXPAND_FORMATS(abcde, abcd, abcde), __VA_ARGS__, EPS, false, \ 45 dnnl_success \ 46 } 47 48 #define PARAMS_LDSNC_CROSS_CASE(...) \ 49 test_lnorm_params_t { \ 50 EXPAND_FORMATS(abcde, acdb, abcde), __VA_ARGS__, EPS, false, \ 51 dnnl_success \ 52 } 53 54 #define PARAMS_EF(...) \ 55 test_lnorm_params_t { EXPAND_FORMATS(abc, ab, abc), __VA_ARGS__ } 56 57 #define CPU_INST_TEST_CASE(str, ...) \ 58 CPU_INSTANTIATE_TEST_SUITE_P( \ 59 str, lnorm_test_t, ::testing::Values(__VA_ARGS__)); 60 61 CPU_INST_TEST_CASE(SimpleExpectedFails, 62 PARAMS_EF({-1, 27, 9}, EPS, true, dnnl_invalid_arguments), 63 PARAMS_EF({1, -12, 10}, EPS, true, dnnl_invalid_arguments), 64 PARAMS_EF({4, 20, -12}, EPS, true, dnnl_invalid_arguments)); 65 66 CPU_INST_TEST_CASE(SimpleZeroDim, PARAMS_NC({0, 9}), PARAMS_NC({1, 0})); 67 68 CPU_INST_TEST_CASE( 69 Simple_NC, PARAMS_NC({1, 100}), PARAMS_NC({20, 8}), PARAMS_NC({2, 10})); 70 71 CPU_INST_TEST_CASE(Simple_TNC, PARAMS_TNC({6, 32, 8}), PARAMS_TNC({2, 10, 4}), 72 PARAMS_TNC({2, 8, 16})); 73 74 CPU_INST_TEST_CASE(CrossCase_TNC, PARAMS_TNC_CROSS_CASE({6, 32, 8}), 75 PARAMS_TNC_CROSS_CASE({2, 10, 4}), PARAMS_TNC_CROSS_CASE({2, 8, 16})); 76 77 CPU_INST_TEST_CASE(Simple_NTC, PARAMS_TNC({64, 32, 8}), PARAMS_TNC({32, 10, 4}), 78 PARAMS_TNC({12, 8, 16})); 79 80 CPU_INST_TEST_CASE(Simple_LDSNC, PARAMS_LDSNC({6, 2, 2, 32, 8}), 81 PARAMS_LDSNC({2, 2, 2, 10, 4}), PARAMS_LDSNC({2, 2, 2, 8, 16})); 82 83 CPU_INST_TEST_CASE(CrossCase_LDSNC, PARAMS_LDSNC_CROSS_CASE({6, 2, 2, 32, 8}), 84 PARAMS_LDSNC_CROSS_CASE({2, 2, 2, 10, 4}), 85 PARAMS_LDSNC_CROSS_CASE({2, 2, 2, 8, 16})); 86