1 | //===-- AArch64SVEACLETypes.def - Metadata about SVE types ------*- C++ -*-===// |
2 | // |
3 | // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
4 | // See https://llvm.org/LICENSE.txt for license information. |
5 | // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
6 | // |
7 | //===----------------------------------------------------------------------===// |
8 | // |
9 | // This file defines various SVE builtin types. The macros are: |
10 | // |
11 | // SVE_TYPE(Name, Id, SingletonId) - A builtin type that has not been |
12 | // covered by any other #define. Defining this macro covers all |
13 | // the builtins. |
14 | // |
15 | // SVE_VECTOR_TYPE(Name, Id, SingletonId, ElKind, ElBits, IsSigned, IsFP) - |
16 | // An SVE scalable vector. |
17 | // |
18 | // SVE_PREDICATE_TYPE(Name, Id, SingletonId, ElKind) - An SVE scalable |
19 | // predicate. |
20 | // |
21 | // where: |
22 | // |
23 | // - Name is the name of the builtin type. |
24 | // |
25 | // - BuiltinType::Id is the enumerator defining the type. |
26 | // |
27 | // - Context.SingletonId is the global singleton of this type. |
28 | // |
29 | // - ElKind enumerates the type of the elements. |
30 | // |
31 | // - ElBits is the size of one element in bits. |
32 | // |
33 | // - IsSigned is true for vectors of signed integer elements and |
34 | // for vectors of floating-point elements. |
35 | // |
36 | // - IsFP is true for vectors of floating-point elements. |
37 | // |
38 | // - IsBF true for vector of brain float elements. |
39 | //===----------------------------------------------------------------------===// |
40 | |
41 | #ifndef SVE_VECTOR_TYPE |
42 | #define SVE_VECTOR_TYPE(Name, MangledName, Id, SingletonId, NumEls, ElBits, \ |
43 | IsSigned, IsFP, IsBF) \ |
44 | SVE_TYPE(Name, Id, SingletonId) |
45 | #endif |
46 | |
47 | #ifndef SVE_PREDICATE_TYPE |
48 | #define SVE_PREDICATE_TYPE(Name, MangledName, Id, SingletonId, NumEls) \ |
49 | SVE_TYPE(Name, Id, SingletonId) |
50 | #endif |
51 | |
52 | #ifndef SVE_OPAQUE_TYPE |
53 | #define SVE_OPAQUE_TYPE(Name, MangledName, Id, SingletonId) \ |
54 | SVE_TYPE(Name, Id, SingletonId) |
55 | #endif |
56 | |
57 | //===- Vector point types -----------------------------------------------===// |
58 | |
59 | |
60 | SVE_VECTOR_TYPE("__SVInt8_t" , "__SVInt8_t" , SveInt8, SveInt8Ty, 16, 8, true, false, false) |
61 | SVE_VECTOR_TYPE("__SVInt16_t" , "__SVInt16_t" , SveInt16, SveInt16Ty, 8, 16, true, false, false) |
62 | SVE_VECTOR_TYPE("__SVInt32_t" , "__SVInt32_t" , SveInt32, SveInt32Ty, 4, 32, true, false, false) |
63 | SVE_VECTOR_TYPE("__SVInt64_t" , "__SVInt64_t" , SveInt64, SveInt64Ty, 2, 64, true, false, false) |
64 | |
65 | SVE_VECTOR_TYPE("__SVUint8_t" , "__SVUint8_t" , SveUint8, SveUint8Ty, 16, 8, false, false, false) |
66 | SVE_VECTOR_TYPE("__SVUint16_t" , "__SVUint16_t" , SveUint16, SveUint16Ty, 8, 16, false, false, false) |
67 | SVE_VECTOR_TYPE("__SVUint32_t" , "__SVUint32_t" , SveUint32, SveUint32Ty, 4, 32, false, false, false) |
68 | SVE_VECTOR_TYPE("__SVUint64_t" , "__SVUint64_t" , SveUint64, SveUint64Ty, 2, 64, false, false, false) |
69 | |
70 | SVE_VECTOR_TYPE("__SVFloat16_t" , "__SVFloat16_t" , SveFloat16, SveFloat16Ty, 8, 16, true, true, false) |
71 | SVE_VECTOR_TYPE("__SVFloat32_t" , "__SVFloat32_t" , SveFloat32, SveFloat32Ty, 4, 32, true, true, false) |
72 | SVE_VECTOR_TYPE("__SVFloat64_t" , "__SVFloat64_t" , SveFloat64, SveFloat64Ty, 2, 64, true, true, false) |
73 | |
74 | SVE_VECTOR_TYPE("__SVBfloat16_t" , "__SVBfloat16_t" , SveBFloat16, SveBFloat16Ty, 8, 16, true, false, true) |
75 | |
76 | // |
77 | // x2 |
78 | // |
79 | SVE_VECTOR_TYPE("__clang_svint8x2_t" , "svint8x2_t" , SveInt8x2, SveInt8x2Ty, 32, 8, true, false, false) |
80 | SVE_VECTOR_TYPE("__clang_svint16x2_t" , "svint16x2_t" , SveInt16x2, SveInt16x2Ty, 16, 16, true, false, false) |
81 | SVE_VECTOR_TYPE("__clang_svint32x2_t" , "svint32x2_t" , SveInt32x2, SveInt32x2Ty, 8, 32, true, false, false) |
82 | SVE_VECTOR_TYPE("__clang_svint64x2_t" , "svint64x2_t" , SveInt64x2, SveInt64x2Ty, 4, 64, true, false, false) |
83 | |
84 | SVE_VECTOR_TYPE("__clang_svuint8x2_t" , "svuint8x2_t" , SveUint8x2, SveUint8x2Ty, 32, 8, false, false, false) |
85 | SVE_VECTOR_TYPE("__clang_svuint16x2_t" , "svuint16x2_t" , SveUint16x2, SveUint16x2Ty, 16, 16, false, false, false) |
86 | SVE_VECTOR_TYPE("__clang_svuint32x2_t" , "svuint32x2_t" , SveUint32x2, SveUint32x2Ty, 8, 32, false, false, false) |
87 | SVE_VECTOR_TYPE("__clang_svuint64x2_t" , "svuint64x2_t" , SveUint64x2, SveUint64x2Ty, 4, 64, false, false, false) |
88 | |
89 | SVE_VECTOR_TYPE("__clang_svfloat16x2_t" , "svfloat16x2_t" , SveFloat16x2, SveFloat16x2Ty, 16, 16, true, true, false) |
90 | SVE_VECTOR_TYPE("__clang_svfloat32x2_t" , "svfloat32x2_t" , SveFloat32x2, SveFloat32x2Ty, 8, 32, true, true, false) |
91 | SVE_VECTOR_TYPE("__clang_svfloat64x2_t" , "svfloat64x2_t" , SveFloat64x2, SveFloat64x2Ty, 4, 64, true, true, false) |
92 | |
93 | SVE_VECTOR_TYPE("__clang_svbfloat16x2_t" , "svbfloat16x2_t" , SveBFloat16x2, SveBFloat16x2Ty, 16, 16, true, false, true) |
94 | // |
95 | // x3 |
96 | // |
97 | SVE_VECTOR_TYPE("__clang_svint8x3_t" , "svint8x3_t" , SveInt8x3, SveInt8x3Ty, 48, 8, true, false, false) |
98 | SVE_VECTOR_TYPE("__clang_svint16x3_t" , "svint16x3_t" , SveInt16x3, SveInt16x3Ty, 24, 16, true, false, false) |
99 | SVE_VECTOR_TYPE("__clang_svint32x3_t" , "svint32x3_t" , SveInt32x3, SveInt32x3Ty, 12, 32, true, false, false) |
100 | SVE_VECTOR_TYPE("__clang_svint64x3_t" , "svint64x3_t" , SveInt64x3, SveInt64x3Ty, 6, 64, true, false, false) |
101 | |
102 | SVE_VECTOR_TYPE("__clang_svuint8x3_t" , "svuint8x3_t" , SveUint8x3, SveUint8x3Ty, 48, 8, false, false, false) |
103 | SVE_VECTOR_TYPE("__clang_svuint16x3_t" , "svuint16x3_t" , SveUint16x3, SveUint16x3Ty, 24, 16, false, false, false) |
104 | SVE_VECTOR_TYPE("__clang_svuint32x3_t" , "svuint32x3_t" , SveUint32x3, SveUint32x3Ty, 12, 32, false, false, false) |
105 | SVE_VECTOR_TYPE("__clang_svuint64x3_t" , "svuint64x3_t" , SveUint64x3, SveUint64x3Ty, 6, 64, false, false, false) |
106 | |
107 | SVE_VECTOR_TYPE("__clang_svfloat16x3_t" , "svfloat16x3_t" , SveFloat16x3, SveFloat16x3Ty, 24, 16, true, true, false) |
108 | SVE_VECTOR_TYPE("__clang_svfloat32x3_t" , "svfloat32x3_t" , SveFloat32x3, SveFloat32x3Ty, 12, 32, true, true, false) |
109 | SVE_VECTOR_TYPE("__clang_svfloat64x3_t" , "svfloat64x3_t" , SveFloat64x3, SveFloat64x3Ty, 6, 64, true, true, false) |
110 | |
111 | SVE_VECTOR_TYPE("__clang_svbfloat16x3_t" , "svbfloat16x3_t" , SveBFloat16x3, SveBFloat16x3Ty, 24, 16, true, false, true) |
112 | // |
113 | // x4 |
114 | // |
115 | SVE_VECTOR_TYPE("__clang_svint8x4_t" , "svint8x4_t" , SveInt8x4, SveInt8x4Ty, 64, 8, true, false, false) |
116 | SVE_VECTOR_TYPE("__clang_svint16x4_t" , "svint16x4_t" , SveInt16x4, SveInt16x4Ty, 32, 16, true, false, false) |
117 | SVE_VECTOR_TYPE("__clang_svint32x4_t" , "svint32x4_t" , SveInt32x4, SveInt32x4Ty, 16, 32, true, false, false) |
118 | SVE_VECTOR_TYPE("__clang_svint64x4_t" , "svint64x4_t" , SveInt64x4, SveInt64x4Ty, 8, 64, true, false, false) |
119 | |
120 | SVE_VECTOR_TYPE("__clang_svuint8x4_t" , "svuint8x4_t" , SveUint8x4, SveUint8x4Ty, 64, 8, false, false, false) |
121 | SVE_VECTOR_TYPE("__clang_svuint16x4_t" , "svuint16x4_t" , SveUint16x4, SveUint16x4Ty, 32, 16, false, false, false) |
122 | SVE_VECTOR_TYPE("__clang_svuint32x4_t" , "svuint32x4_t" , SveUint32x4, SveUint32x4Ty, 16, 32, false, false, false) |
123 | SVE_VECTOR_TYPE("__clang_svuint64x4_t" , "svuint64x4_t" , SveUint64x4, SveUint64x4Ty, 8, 64, false, false, false) |
124 | |
125 | SVE_VECTOR_TYPE("__clang_svfloat16x4_t" , "svfloat16x4_t" , SveFloat16x4, SveFloat16x4Ty, 32, 16, true, true, false) |
126 | SVE_VECTOR_TYPE("__clang_svfloat32x4_t" , "svfloat32x4_t" , SveFloat32x4, SveFloat32x4Ty, 16, 32, true, true, false) |
127 | SVE_VECTOR_TYPE("__clang_svfloat64x4_t" , "svfloat64x4_t" , SveFloat64x4, SveFloat64x4Ty, 8, 64, true, true, false) |
128 | |
129 | SVE_VECTOR_TYPE("__clang_svbfloat16x4_t" , "svbfloat16x4_t" , SveBFloat16x4, SveBFloat16x4Ty, 32, 16, true, false, true) |
130 | |
131 | SVE_PREDICATE_TYPE("__SVBool_t" , "__SVBool_t" , SveBool, SveBoolTy, 16) |
132 | SVE_PREDICATE_TYPE("__clang_svboolx2_t" , "svboolx2_t" , SveBoolx2, SveBoolx2Ty, 32) |
133 | SVE_PREDICATE_TYPE("__clang_svboolx4_t" , "svboolx4_t" , SveBoolx4, SveBoolx4Ty, 64) |
134 | |
135 | SVE_OPAQUE_TYPE("__SVCount_t" , "__SVCount_t" , SveCount, SveCountTy) |
136 | |
137 | #undef SVE_VECTOR_TYPE |
138 | #undef SVE_PREDICATE_TYPE |
139 | #undef SVE_OPAQUE_TYPE |
140 | #undef SVE_TYPE |
141 | |