Warning: This file is not a C or C++ file. It does not have highlighting.
1 | //===----- hlsl_basic_types.h - HLSL definitions for basic types ----------===// |
---|---|
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 | #ifndef _HLSL_HLSL_BASIC_TYPES_H_ |
10 | #define _HLSL_HLSL_BASIC_TYPES_H_ |
11 | |
12 | namespace hlsl { |
13 | // built-in scalar data types: |
14 | |
15 | /// \typedef template<typename Ty, int Size> using vector = Ty |
16 | /// __attribute__((ext_vector_type(Size))) |
17 | /// |
18 | /// \tparam Ty The base type of the vector may be any builtin integral or |
19 | /// floating point type. |
20 | /// \tparam Size The size of the vector may be any value between 1 and 4. |
21 | |
22 | #ifdef __HLSL_ENABLE_16_BIT |
23 | // 16-bit integer. |
24 | typedef unsigned short uint16_t; |
25 | typedef short int16_t; |
26 | #endif |
27 | |
28 | // unsigned 32-bit integer. |
29 | typedef unsigned int uint; |
30 | |
31 | // 64-bit integer. |
32 | typedef unsigned long uint64_t; |
33 | typedef long int64_t; |
34 | |
35 | // built-in vector data types: |
36 | |
37 | #ifdef __HLSL_ENABLE_16_BIT |
38 | typedef vector<int16_t, 2> int16_t2; |
39 | typedef vector<int16_t, 3> int16_t3; |
40 | typedef vector<int16_t, 4> int16_t4; |
41 | typedef vector<uint16_t, 2> uint16_t2; |
42 | typedef vector<uint16_t, 3> uint16_t3; |
43 | typedef vector<uint16_t, 4> uint16_t4; |
44 | #endif |
45 | typedef vector<bool, 2> bool2; |
46 | typedef vector<bool, 3> bool3; |
47 | typedef vector<bool, 4> bool4; |
48 | typedef vector<int, 2> int2; |
49 | typedef vector<int, 3> int3; |
50 | typedef vector<int, 4> int4; |
51 | typedef vector<uint, 2> uint2; |
52 | typedef vector<uint, 3> uint3; |
53 | typedef vector<uint, 4> uint4; |
54 | typedef vector<int64_t, 2> int64_t2; |
55 | typedef vector<int64_t, 3> int64_t3; |
56 | typedef vector<int64_t, 4> int64_t4; |
57 | typedef vector<uint64_t, 2> uint64_t2; |
58 | typedef vector<uint64_t, 3> uint64_t3; |
59 | typedef vector<uint64_t, 4> uint64_t4; |
60 | |
61 | typedef vector<half, 2> half2; |
62 | typedef vector<half, 3> half3; |
63 | typedef vector<half, 4> half4; |
64 | |
65 | typedef vector<float, 2> float2; |
66 | typedef vector<float, 3> float3; |
67 | typedef vector<float, 4> float4; |
68 | typedef vector<double, 2> double2; |
69 | typedef vector<double, 3> double3; |
70 | typedef vector<double, 4> double4; |
71 | |
72 | } // namespace hlsl |
73 | |
74 | #endif //_HLSL_HLSL_BASIC_TYPES_H_ |
75 |
Warning: This file is not a C or C++ file. It does not have highlighting.