telsoa01 | c577f2c | 2018-08-31 09:22:23 +0100 | [diff] [blame] | 1 | // |
2 | // Copyright © 2017 Arm Ltd. All rights reserved. | ||||
David Beck | ecb56cd | 2018-09-05 12:52:57 +0100 | [diff] [blame] | 3 | // SPDX-License-Identifier: MIT |
telsoa01 | c577f2c | 2018-08-31 09:22:23 +0100 | [diff] [blame] | 4 | // |
5 | |||||
6 | #pragma once | ||||
7 | |||||
8 | #include "armnn/Types.hpp" | ||||
Aron Virginas-Tar | c9cc804 | 2018-11-01 16:15:57 +0000 | [diff] [blame] | 9 | #include "Half.hpp" |
telsoa01 | c577f2c | 2018-08-31 09:22:23 +0100 | [diff] [blame] | 10 | |
11 | namespace armnn | ||||
12 | { | ||||
13 | |||||
telsoa01 | c577f2c | 2018-08-31 09:22:23 +0100 | [diff] [blame] | 14 | template<DataType DT> |
15 | struct ResolveTypeImpl; | ||||
16 | |||||
telsoa01 | c577f2c | 2018-08-31 09:22:23 +0100 | [diff] [blame] | 17 | template <> |
18 | struct ResolveTypeImpl<DataType::Float16> | ||||
19 | { | ||||
20 | using Type = Half; | ||||
21 | }; | ||||
22 | |||||
23 | template<> | ||||
24 | struct ResolveTypeImpl<DataType::Float32> | ||||
25 | { | ||||
26 | using Type = float; | ||||
27 | }; | ||||
28 | |||||
ruoyan01 | 20e984f | 2018-12-12 18:11:25 +0000 | [diff] [blame] | 29 | template<> |
Derek Lamberti | f90c56d | 2020-01-10 17:14:08 +0000 | [diff] [blame] | 30 | struct ResolveTypeImpl<DataType::QAsymmU8> |
Matteo Martincigh | 4912402 | 2019-01-11 13:25:59 +0000 | [diff] [blame] | 31 | { |
32 | using Type = uint8_t; | ||||
33 | }; | ||||
34 | |||||
35 | template<> | ||||
Ryan OShea | 9add120 | 2020-02-07 10:06:33 +0000 | [diff] [blame] | 36 | struct ResolveTypeImpl<DataType::QAsymmS8> |
37 | { | ||||
38 | using Type = int8_t; | ||||
39 | }; | ||||
40 | |||||
41 | template<> | ||||
Finn Williams | fd27106 | 2019-12-04 14:27:27 +0000 | [diff] [blame] | 42 | struct ResolveTypeImpl<DataType::QSymmS8> |
43 | { | ||||
44 | using Type = int8_t; | ||||
45 | }; | ||||
46 | |||||
47 | template<> | ||||
Derek Lamberti | f90c56d | 2020-01-10 17:14:08 +0000 | [diff] [blame] | 48 | struct ResolveTypeImpl<DataType::QSymmS16> |
Nattapat Chaimanowong | cd5ac23 | 2019-03-19 12:26:36 +0000 | [diff] [blame] | 49 | { |
50 | using Type = int16_t; | ||||
51 | }; | ||||
52 | |||||
53 | template<> | ||||
Matteo Martincigh | 4912402 | 2019-01-11 13:25:59 +0000 | [diff] [blame] | 54 | struct ResolveTypeImpl<DataType::Signed32> |
55 | { | ||||
56 | using Type = int32_t; | ||||
57 | }; | ||||
58 | |||||
59 | template<> | ||||
ruoyan01 | 20e984f | 2018-12-12 18:11:25 +0000 | [diff] [blame] | 60 | struct ResolveTypeImpl<DataType::Boolean> |
61 | { | ||||
Nattapat Chaimanowong | 8c76cc1 | 2019-01-23 09:59:14 +0000 | [diff] [blame] | 62 | using Type = uint8_t; |
ruoyan01 | 20e984f | 2018-12-12 18:11:25 +0000 | [diff] [blame] | 63 | }; |
64 | |||||
telsoa01 | c577f2c | 2018-08-31 09:22:23 +0100 | [diff] [blame] | 65 | template<DataType DT> |
66 | using ResolveType = typename ResolveTypeImpl<DT>::Type; | ||||
67 | |||||
arovir01 | 616e775 | 2018-10-01 17:08:59 +0100 | [diff] [blame] | 68 | } //namespace armnn |