181ad6265SDimitry Andric //===----- hlsl_basic_types.h - HLSL definitions for basic types ----------===//
281ad6265SDimitry Andric //
381ad6265SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
481ad6265SDimitry Andric // See https://llvm.org/LICENSE.txt for license information.
581ad6265SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
681ad6265SDimitry Andric //
781ad6265SDimitry Andric //===----------------------------------------------------------------------===//
881ad6265SDimitry Andric 
981ad6265SDimitry Andric #ifndef _HLSL_HLSL_BASIC_TYPES_H_
1081ad6265SDimitry Andric #define _HLSL_HLSL_BASIC_TYPES_H_
1181ad6265SDimitry Andric 
12*bdd1243dSDimitry Andric namespace hlsl {
1381ad6265SDimitry Andric // built-in scalar data types:
1481ad6265SDimitry Andric 
1581ad6265SDimitry Andric #ifdef __HLSL_ENABLE_16_BIT
1681ad6265SDimitry Andric // 16-bit integer.
1781ad6265SDimitry Andric typedef unsigned short uint16_t;
1881ad6265SDimitry Andric typedef short int16_t;
1981ad6265SDimitry Andric #endif
2081ad6265SDimitry Andric 
2181ad6265SDimitry Andric // unsigned 32-bit integer.
2281ad6265SDimitry Andric typedef unsigned int uint;
2381ad6265SDimitry Andric 
2481ad6265SDimitry Andric // 64-bit integer.
2581ad6265SDimitry Andric typedef unsigned long uint64_t;
2681ad6265SDimitry Andric typedef long int64_t;
2781ad6265SDimitry Andric 
2881ad6265SDimitry Andric // built-in vector data types:
2981ad6265SDimitry Andric 
3081ad6265SDimitry Andric #ifdef __HLSL_ENABLE_16_BIT
31753f127fSDimitry Andric typedef vector<int16_t, 2> int16_t2;
32753f127fSDimitry Andric typedef vector<int16_t, 3> int16_t3;
33753f127fSDimitry Andric typedef vector<int16_t, 4> int16_t4;
34753f127fSDimitry Andric typedef vector<uint16_t, 2> uint16_t2;
35753f127fSDimitry Andric typedef vector<uint16_t, 3> uint16_t3;
36753f127fSDimitry Andric typedef vector<uint16_t, 4> uint16_t4;
3781ad6265SDimitry Andric #endif
3881ad6265SDimitry Andric 
39753f127fSDimitry Andric typedef vector<int, 2> int2;
40753f127fSDimitry Andric typedef vector<int, 3> int3;
41753f127fSDimitry Andric typedef vector<int, 4> int4;
42753f127fSDimitry Andric typedef vector<uint, 2> uint2;
43753f127fSDimitry Andric typedef vector<uint, 3> uint3;
44753f127fSDimitry Andric typedef vector<uint, 4> uint4;
45753f127fSDimitry Andric typedef vector<int64_t, 2> int64_t2;
46753f127fSDimitry Andric typedef vector<int64_t, 3> int64_t3;
47753f127fSDimitry Andric typedef vector<int64_t, 4> int64_t4;
48753f127fSDimitry Andric typedef vector<uint64_t, 2> uint64_t2;
49753f127fSDimitry Andric typedef vector<uint64_t, 3> uint64_t3;
50753f127fSDimitry Andric typedef vector<uint64_t, 4> uint64_t4;
5181ad6265SDimitry Andric 
5281ad6265SDimitry Andric #ifdef __HLSL_ENABLE_16_BIT
53753f127fSDimitry Andric typedef vector<half, 2> half2;
54753f127fSDimitry Andric typedef vector<half, 3> half3;
55753f127fSDimitry Andric typedef vector<half, 4> half4;
5681ad6265SDimitry Andric #endif
5781ad6265SDimitry Andric 
58753f127fSDimitry Andric typedef vector<float, 2> float2;
59753f127fSDimitry Andric typedef vector<float, 3> float3;
60753f127fSDimitry Andric typedef vector<float, 4> float4;
61753f127fSDimitry Andric typedef vector<double, 2> double2;
62753f127fSDimitry Andric typedef vector<double, 3> double3;
63753f127fSDimitry Andric typedef vector<double, 4> double4;
6481ad6265SDimitry Andric 
65*bdd1243dSDimitry Andric } // namespace hlsl
66*bdd1243dSDimitry Andric 
6781ad6265SDimitry Andric #endif //_HLSL_HLSL_BASIC_TYPES_H_
68