xref: /llvm-project/clang/test/CodeGenHLSL/basic_types.hlsl (revision c2063de1593610eda0f4de33c3b89324642ed54c)
1// RUN: %clang_cc1 -std=hlsl2021 -finclude-default-header -x hlsl -triple \
2// RUN:   dxil-pc-shadermodel6.3-library %s -fnative-half-type \
3// RUN:   -emit-llvm -disable-llvm-passes -o - | FileCheck %s
4// RUN: %clang_cc1 -std=hlsl2021 -finclude-default-header -x hlsl -triple \
5// RUN:   dxil-pc-shadermodel6.3-library %s -fnative-half-type \
6// RUN:   -emit-llvm -disable-llvm-passes -o - -DNAMESPACED| FileCheck %s
7
8
9// CHECK: @uint16_t_Val = global i16 0, align 2
10// CHECK: @int16_t_Val = global i16 0, align 2
11// CHECK: @uint_Val = global i32 0, align 4
12// CHECK: @uint64_t_Val = global i64 0, align 8
13// CHECK: @int64_t_Val = global i64 0, align 8
14// CHECK: @int16_t2_Val = global <2 x i16> zeroinitializer, align 4
15// CHECK: @int16_t3_Val = global <3 x i16> zeroinitializer, align 8
16// CHECK: @int16_t4_Val = global <4 x i16> zeroinitializer, align 8
17// CHECK: @uint16_t2_Val = global <2 x i16> zeroinitializer, align 4
18// CHECK: @uint16_t3_Val = global <3 x i16> zeroinitializer, align 8
19// CHECK: @uint16_t4_Val = global <4 x i16> zeroinitializer, align 8
20// CHECK: @int2_Val = global <2 x i32> zeroinitializer, align 8
21// CHECK: @int3_Val = global <3 x i32> zeroinitializer, align 16
22// CHECK: @int4_Val = global <4 x i32> zeroinitializer, align 16
23// CHECK: @uint2_Val = global <2 x i32> zeroinitializer, align 8
24// CHECK: @uint3_Val = global <3 x i32> zeroinitializer, align 16
25// CHECK: @uint4_Val = global <4 x i32> zeroinitializer, align 16
26// CHECK: @int64_t2_Val = global <2 x i64> zeroinitializer, align 16
27// CHECK: @int64_t3_Val = global <3 x i64> zeroinitializer, align 32
28// CHECK: @int64_t4_Val = global <4 x i64> zeroinitializer, align 32
29// CHECK: @uint64_t2_Val = global <2 x i64> zeroinitializer, align 16
30// CHECK: @uint64_t3_Val = global <3 x i64> zeroinitializer, align 32
31// CHECK: @uint64_t4_Val = global <4 x i64> zeroinitializer, align 32
32// CHECK: @half2_Val = global <2 x half> zeroinitializer, align 4
33// CHECK: @half3_Val = global <3 x half> zeroinitializer, align 8
34// CHECK: @half4_Val = global <4 x half> zeroinitializer, align 8
35// CHECK: @float2_Val = global <2 x float> zeroinitializer, align 8
36// CHECK: @float3_Val = global <3 x float> zeroinitializer, align 16
37// CHECK: @float4_Val = global <4 x float> zeroinitializer, align 16
38// CHECK: @double2_Val = global <2 x double> zeroinitializer, align 16
39// CHECK: @double3_Val = global <3 x double> zeroinitializer, align 32
40// CHECK: @double4_Val = global <4 x double> zeroinitializer, align 32
41
42#ifdef NAMESPACED
43#define TYPE_DECL(T)  hlsl::T T##_Val
44#else
45#define TYPE_DECL(T)  T T##_Val
46#endif
47
48#ifdef __HLSL_ENABLE_16_BIT
49TYPE_DECL(uint16_t);
50TYPE_DECL(int16_t);
51#endif
52
53// unsigned 32-bit integer.
54TYPE_DECL(uint);
55
56// 64-bit integer.
57TYPE_DECL(uint64_t);
58TYPE_DECL(int64_t);
59
60// built-in vector data types:
61
62#ifdef __HLSL_ENABLE_16_BIT
63TYPE_DECL(int16_t2   );
64TYPE_DECL(int16_t3   );
65TYPE_DECL(int16_t4   );
66TYPE_DECL( uint16_t2 );
67TYPE_DECL( uint16_t3 );
68TYPE_DECL( uint16_t4 );
69#endif
70
71TYPE_DECL( int2  );
72TYPE_DECL( int3  );
73TYPE_DECL( int4  );
74TYPE_DECL( uint2 );
75TYPE_DECL( uint3 );
76TYPE_DECL( uint4     );
77TYPE_DECL( int64_t2  );
78TYPE_DECL( int64_t3  );
79TYPE_DECL( int64_t4  );
80TYPE_DECL( uint64_t2 );
81TYPE_DECL( uint64_t3 );
82TYPE_DECL( uint64_t4 );
83
84#ifdef __HLSL_ENABLE_16_BIT
85TYPE_DECL(half2 );
86TYPE_DECL(half3 );
87TYPE_DECL(half4 );
88#endif
89
90TYPE_DECL( float2  );
91TYPE_DECL( float3  );
92TYPE_DECL( float4  );
93TYPE_DECL( double2 );
94TYPE_DECL( double3 );
95TYPE_DECL( double4 );
96