1 | /******************************************************************************* |
2 | * Copyright 2022 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 | #include <stdio.h> |
18 | #include <stdlib.h> |
19 | |
20 | #include "self/self.hpp" |
21 | |
22 | #include "utils/compare.hpp" |
23 | |
24 | namespace self { |
25 | |
26 | static int check_status_change() { |
27 | { |
28 | res_t res; |
29 | res.state = EXECUTED; |
30 | dnnl_dims_t dims {10}; |
31 | dnn_mem_t m0(1, dims, dnnl_f32, tag::abx, get_cpu_engine()); |
32 | dnn_mem_t m1(1, dims, dnnl_f32, tag::abx, get_cpu_engine()); |
33 | for (int i = 0; i < dims[0]; i++) { |
34 | m0.set_elem(i, 0); |
35 | m1.set_elem(i, 0); |
36 | } |
37 | compare::compare_t cmp; |
38 | cmp.compare(m0, m1, attr_t(), &res); |
39 | SELF_CHECK_EQ(res.state, MISTRUSTED); |
40 | } |
41 | { |
42 | res_t res; |
43 | res.state = EXECUTED; |
44 | dnnl_dims_t dims {10}; |
45 | dnn_mem_t m0(1, dims, dnnl_f32, tag::abx, get_cpu_engine()); |
46 | dnn_mem_t m1(1, dims, dnnl_f32, tag::abx, get_cpu_engine()); |
47 | for (int i = 0; i < dims[0]; i++) { |
48 | m0.set_elem(i, i); |
49 | m1.set_elem(i, i); |
50 | } |
51 | compare::compare_t cmp; |
52 | cmp.compare(m0, m1, attr_t(), &res); |
53 | SELF_CHECK_EQ(res.state, PASSED); |
54 | } |
55 | { |
56 | res_t res; |
57 | res.state = EXECUTED; |
58 | dnnl_dims_t dims {10}; |
59 | dnn_mem_t m0(1, dims, dnnl_f32, tag::abx, get_cpu_engine()); |
60 | dnn_mem_t m1(1, dims, dnnl_f32, tag::abx, get_cpu_engine()); |
61 | for (int i = 0; i < dims[0]; i++) { |
62 | m0.set_elem(i, i); |
63 | m1.set_elem(i, i - 1); |
64 | } |
65 | compare::compare_t cmp; |
66 | cmp.compare(m0, m1, attr_t(), &res); |
67 | SELF_CHECK_EQ(res.state, FAILED); |
68 | } |
69 | { |
70 | res_t res; |
71 | res.state = FAILED; |
72 | dnnl_dims_t dims {10}; |
73 | dnn_mem_t m0(1, dims, dnnl_f32, tag::abx, get_cpu_engine()); |
74 | dnn_mem_t m1(1, dims, dnnl_f32, tag::abx, get_cpu_engine()); |
75 | for (int i = 0; i < dims[0]; i++) { |
76 | m0.set_elem(i, 0); |
77 | m1.set_elem(i, 0); |
78 | } |
79 | compare::compare_t cmp; |
80 | cmp.compare(m0, m1, attr_t(), &res); |
81 | SELF_CHECK_EQ(res.state, FAILED); |
82 | } |
83 | { |
84 | res_t res; |
85 | res.state = FAILED; |
86 | dnnl_dims_t dims {10}; |
87 | dnn_mem_t m0(1, dims, dnnl_f32, tag::abx, get_cpu_engine()); |
88 | dnn_mem_t m1(1, dims, dnnl_f32, tag::abx, get_cpu_engine()); |
89 | for (int i = 0; i < dims[0]; i++) { |
90 | m0.set_elem(i, i); |
91 | m1.set_elem(i, i); |
92 | } |
93 | compare::compare_t cmp; |
94 | cmp.compare(m0, m1, attr_t(), &res); |
95 | SELF_CHECK_EQ(res.state, FAILED); |
96 | } |
97 | { |
98 | res_t res; |
99 | res.state = FAILED; |
100 | dnnl_dims_t dims {10}; |
101 | dnn_mem_t m0(1, dims, dnnl_f32, tag::abx, get_cpu_engine()); |
102 | dnn_mem_t m1(1, dims, dnnl_f32, tag::abx, get_cpu_engine()); |
103 | for (int i = 0; i < dims[0]; i++) { |
104 | m0.set_elem(i, i); |
105 | m1.set_elem(i, i - 1); |
106 | } |
107 | compare::compare_t cmp; |
108 | cmp.compare(m0, m1, attr_t(), &res); |
109 | SELF_CHECK_EQ(res.state, FAILED); |
110 | } |
111 | return OK; |
112 | } |
113 | |
114 | void res() { |
115 | RUN(check_status_change()); |
116 | } |
117 | |
118 | } // namespace self |
119 | |