blob: 14e709f028d31c7e5077f7de1136e8a33ed4cb4b [file] [log] [blame]
Pablo Tello89519332017-11-17 11:52:36 +00001
2/*
3 * Copyright (c) 2017 ARM Limited.
4 *
5 * SPDX-License-Identifier: MIT
6 *
7 * Permission is hereby granted, free of charge, to any person obtaining a copy
8 * of this software and associated documentation files (the "Software"), to
9 * deal in the Software without restriction, including without limitation the
10 * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
11 * sell copies of the Software, and to permit persons to whom the Software is
12 * furnished to do so, subject to the following conditions:
13 *
14 * The above copyright notice and this permission notice shall be included in all
15 * copies or substantial portions of the Software.
16 *
17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23 * SOFTWARE.
24 */
25#pragma once
26#include <ctime>
27
28inline double TimeInUs(void) {
29#ifdef CYCLE_PROFILING
30 timespec t;
31 clock_gettime(CLOCK_THREAD_CPUTIME_ID, &t);
32 return 1e6*t.tv_sec + 1e-3*t.tv_nsec;
33#else
34 return 0;
35#endif
36}
37
38inline int iceildiv(const int a, const int b) {
39 return (a + b - 1) / b;
40}
41
42template <typename T>
43inline T roundup(const T a, const T b) {
44 return a + b - (a % b);
45}
46
47inline void PrintMatrix(const float* const m, const int M, const int N, const int row_stride) {
48 for (int i = 0; i < M; i++) {
49 for (int j = 0; j < N; j++) {
50 printf("%.3f ", m[i*row_stride + j]);
51 }
52 printf("\n");
53 }
54 printf("\n");
55}