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
24namespace self {
25
26static 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
114void res() {
115 RUN(check_status_change());
116}
117
118} // namespace self
119