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