Make test more lenient for custom clang version strings
[llvm-project.git] / clang / test / CodeGenHLSL / builtins / any.hlsl
blob3d9d8e9e689ed036d959062b7931c6c7049648c0
1 // RUN: %clang_cc1 -finclude-default-header -x hlsl -triple \
2 // RUN:   spirv-unknown-vulkan-compute %s -fnative-half-type \
3 // RUN:   -emit-llvm -disable-llvm-passes -o - | FileCheck %s \ 
4 // RUN:   --check-prefixes=CHECK,NATIVE_HALF \
5 // RUN:   -DFNATTRS="spir_func noundef" -DTARGET=spv
6 // RUN: %clang_cc1 -finclude-default-header -x hlsl -triple \
7 // RUN:   spirv-unknown-vulkan-compute %s -emit-llvm -disable-llvm-passes \
8 // RUN:   -o - | FileCheck %s --check-prefixes=CHECK \
9 // RUN:   -DFNATTRS="spir_func noundef" -DTARGET=spv
10 // RUN: %clang_cc1 -finclude-default-header -x hlsl -triple \
11 // RUN:   dxil-pc-shadermodel6.3-library %s -fnative-half-type \
12 // RUN:   -emit-llvm -disable-llvm-passes -o - | FileCheck %s \ 
13 // RUN:   --check-prefixes=CHECK,NATIVE_HALF \
14 // RUN:   -DFNATTRS=noundef -DTARGET=dx
15 // RUN: %clang_cc1 -finclude-default-header -x hlsl -triple \
16 // RUN:   dxil-pc-shadermodel6.3-library %s -emit-llvm -disable-llvm-passes \
17 // RUN:   -o - | FileCheck %s --check-prefixes=CHECK \
18 // RUN:   -DFNATTRS=noundef -DTARGET=dx
20 #ifdef __HLSL_ENABLE_16_BIT
21 // NATIVE_HALF: define [[FNATTRS]] i1 @
22 // NATIVE_HALF: %hlsl.any = call i1 @llvm.[[TARGET]].any.i16
23 // NATIVE_HALF: ret i1 %hlsl.any
24 bool test_any_int16_t(int16_t p0) { return any(p0); }
26 // NATIVE_HALF: define [[FNATTRS]] i1 @
27 // NATIVE_HALF: %hlsl.any = call i1 @llvm.[[TARGET]].any.v2i16
28 // NATIVE_HALF: ret i1 %hlsl.any
29 bool test_any_int16_t2(int16_t2 p0) { return any(p0); }
31 // NATIVE_HALF: define [[FNATTRS]] i1 @
32 // NATIVE_HALF: %hlsl.any = call i1 @llvm.[[TARGET]].any.v3i16
33 // NATIVE_HALF: ret i1 %hlsl.any
34 bool test_any_int16_t3(int16_t3 p0) { return any(p0); }
36 // NATIVE_HALF: define [[FNATTRS]] i1 @
37 // NATIVE_HALF: %hlsl.any = call i1 @llvm.[[TARGET]].any.v4i16
38 // NATIVE_HALF: ret i1 %hlsl.any
39 bool test_any_int16_t4(int16_t4 p0) { return any(p0); }
41 // NATIVE_HALF: define [[FNATTRS]] i1 @
42 // NATIVE_HALF: %hlsl.any = call i1 @llvm.[[TARGET]].any.i16
43 // NATIVE_HALF: ret i1 %hlsl.any
44 bool test_any_uint16_t(uint16_t p0) { return any(p0); }
46 // NATIVE_HALF: define [[FNATTRS]] i1 @
47 // NATIVE_HALF: %hlsl.any = call i1 @llvm.[[TARGET]].any.v2i16
48 // NATIVE_HALF: ret i1 %hlsl.any
49 bool test_any_uint16_t2(uint16_t2 p0) { return any(p0); }
51 // NATIVE_HALF: define [[FNATTRS]] i1 @
52 // NATIVE_HALF: %hlsl.any = call i1 @llvm.[[TARGET]].any.v3i16
53 // NATIVE_HALF: ret i1 %hlsl.any
54 bool test_any_uint16_t3(uint16_t3 p0) { return any(p0); }
56 // NATIVE_HALF: define [[FNATTRS]] i1 @
57 // NATIVE_HALF: %hlsl.any = call i1 @llvm.[[TARGET]].any.v4i16
58 // NATIVE_HALF: ret i1 %hlsl.any
59 bool test_any_uint16_t4(uint16_t4 p0) { return any(p0); }
60 #endif // __HLSL_ENABLE_16_BIT
62 // CHECK: define [[FNATTRS]] i1 @
63 // NATIVE_HALF: %hlsl.any = call i1 @llvm.[[TARGET]].any.f16
64 // NO_HALF: %hlsl.any = call i1 @llvm.[[TARGET]].any.f32
65 // CHECK: ret i1 %hlsl.any
66 bool test_any_half(half p0) { return any(p0); }
68 // CHECK: define [[FNATTRS]] i1 @
69 // NATIVE_HALF: %hlsl.any = call i1 @llvm.[[TARGET]].any.v2f16
70 // NO_HALF: %hlsl.any = call i1 @llvm.[[TARGET]].any.v2f32
71 // CHECK: ret i1 %hlsl.any
72 bool test_any_half2(half2 p0) { return any(p0); }
74 // CHECK: define [[FNATTRS]] i1 @
75 // NATIVE_HALF: %hlsl.any = call i1 @llvm.[[TARGET]].any.v3f16
76 // NO_HALF: %hlsl.any = call i1 @llvm.[[TARGET]].any.v3f32
77 // CHECK: ret i1 %hlsl.any
78 bool test_any_half3(half3 p0) { return any(p0); }
80 // CHECK: define [[FNATTRS]] i1 @
81 // NATIVE_HALF: %hlsl.any = call i1 @llvm.[[TARGET]].any.v4f16
82 // NO_HALF: %hlsl.any = call i1 @llvm.[[TARGET]].any.v4f32
83 // CHECK: ret i1 %hlsl.any
84 bool test_any_half4(half4 p0) { return any(p0); }
86 // CHECK: define [[FNATTRS]] i1 @
87 // CHECK: %hlsl.any = call i1 @llvm.[[TARGET]].any.f32
88 // CHECK: ret i1 %hlsl.any
89 bool test_any_float(float p0) { return any(p0); }
91 // CHECK: define [[FNATTRS]] i1 @
92 // CHECK: %hlsl.any = call i1 @llvm.[[TARGET]].any.v2f32
93 // CHECK: ret i1 %hlsl.any
94 bool test_any_float2(float2 p0) { return any(p0); }
96 // CHECK: define [[FNATTRS]] i1 @
97 // CHECK: %hlsl.any = call i1 @llvm.[[TARGET]].any.v3f32
98 // CHECK: ret i1 %hlsl.any
99 bool test_any_float3(float3 p0) { return any(p0); }
101 // CHECK: define [[FNATTRS]] i1 @
102 // CHECK: %hlsl.any = call i1 @llvm.[[TARGET]].any.v4f32
103 // CHECK: ret i1 %hlsl.any
104 bool test_any_float4(float4 p0) { return any(p0); }
106 // CHECK: define [[FNATTRS]] i1 @
107 // CHECK: %hlsl.any = call i1 @llvm.[[TARGET]].any.f64
108 // CHECK: ret i1 %hlsl.any
109 bool test_any_double(double p0) { return any(p0); }
111 // CHECK: define [[FNATTRS]] i1 @
112 // CHECK: %hlsl.any = call i1 @llvm.[[TARGET]].any.v2f64
113 // CHECK: ret i1 %hlsl.any
114 bool test_any_double2(double2 p0) { return any(p0); }
116 // CHECK: define [[FNATTRS]] i1 @
117 // CHECK: %hlsl.any = call i1 @llvm.[[TARGET]].any.v3f64
118 // CHECK: ret i1 %hlsl.any
119 bool test_any_double3(double3 p0) { return any(p0); }
121 // CHECK: define [[FNATTRS]] i1 @
122 // CHECK: %hlsl.any = call i1 @llvm.[[TARGET]].any.v4f64
123 // CHECK: ret i1 %hlsl.any
124 bool test_any_double4(double4 p0) { return any(p0); }
126 // CHECK: define [[FNATTRS]] i1 @
127 // CHECK: %hlsl.any = call i1 @llvm.[[TARGET]].any.i32
128 // CHECK: ret i1 %hlsl.any
129 bool test_any_int(int p0) { return any(p0); }
131 // CHECK: define [[FNATTRS]] i1 @
132 // CHECK: %hlsl.any = call i1 @llvm.[[TARGET]].any.v2i32
133 // CHECK: ret i1 %hlsl.any
134 bool test_any_int2(int2 p0) { return any(p0); }
136 // CHECK: define [[FNATTRS]] i1 @
137 // CHECK: %hlsl.any = call i1 @llvm.[[TARGET]].any.v3i32
138 // CHECK: ret i1 %hlsl.any
139 bool test_any_int3(int3 p0) { return any(p0); }
141 // CHECK: define [[FNATTRS]] i1 @
142 // CHECK: %hlsl.any = call i1 @llvm.[[TARGET]].any.v4i32
143 // CHECK: ret i1 %hlsl.any
144 bool test_any_int4(int4 p0) { return any(p0); }
146 // CHECK: define [[FNATTRS]] i1 @
147 // CHECK: %hlsl.any = call i1 @llvm.[[TARGET]].any.i32
148 // CHECK: ret i1 %hlsl.any
149 bool test_any_uint(uint p0) { return any(p0); }
151 // CHECK: define [[FNATTRS]] i1 @
152 // CHECK: %hlsl.any = call i1 @llvm.[[TARGET]].any.v2i32
153 // CHECK: ret i1 %hlsl.any
154 bool test_any_uint2(uint2 p0) { return any(p0); }
156 // CHECK: define [[FNATTRS]] i1 @
157 // CHECK: %hlsl.any = call i1 @llvm.[[TARGET]].any.v3i32
158 // CHECK: ret i1 %hlsl.any
159 bool test_any_uint3(uint3 p0) { return any(p0); }
161 // CHECK: define [[FNATTRS]] i1 @
162 // CHECK: %hlsl.any = call i1 @llvm.[[TARGET]].any.v4i32
163 // CHECK: ret i1 %hlsl.any
164 bool test_any_uint4(uint4 p0) { return any(p0); }
166 // CHECK: define [[FNATTRS]] i1 @
167 // CHECK: %hlsl.any = call i1 @llvm.[[TARGET]].any.i64
168 // CHECK: ret i1 %hlsl.any
169 bool test_any_int64_t(int64_t p0) { return any(p0); }
171 // CHECK: define [[FNATTRS]] i1 @
172 // CHECK: %hlsl.any = call i1 @llvm.[[TARGET]].any.v2i64
173 // CHECK: ret i1 %hlsl.any
174 bool test_any_int64_t2(int64_t2 p0) { return any(p0); }
176 // CHECK: define [[FNATTRS]] i1 @
177 // CHECK: %hlsl.any = call i1 @llvm.[[TARGET]].any.v3i64
178 // CHECK: ret i1 %hlsl.any
179 bool test_any_int64_t3(int64_t3 p0) { return any(p0); }
181 // CHECK: define [[FNATTRS]] i1 @
182 // CHECK: %hlsl.any = call i1 @llvm.[[TARGET]].any.v4i64
183 // CHECK: ret i1 %hlsl.any
184 bool test_any_int64_t4(int64_t4 p0) { return any(p0); }
186 // CHECK: define [[FNATTRS]] i1 @
187 // CHECK: %hlsl.any = call i1 @llvm.[[TARGET]].any.i64
188 // CHECK: ret i1 %hlsl.any
189 bool test_any_uint64_t(uint64_t p0) { return any(p0); }
191 // CHECK: define [[FNATTRS]] i1 @
192 // CHECK: %hlsl.any = call i1 @llvm.[[TARGET]].any.v2i64
193 // CHECK: ret i1 %hlsl.any
194 bool test_any_uint64_t2(uint64_t2 p0) { return any(p0); }
196 // CHECK: define [[FNATTRS]] i1 @
197 // CHECK: %hlsl.any = call i1 @llvm.[[TARGET]].any.v3i64
198 // CHECK: ret i1 %hlsl.any
199 bool test_any_uint64_t3(uint64_t3 p0) { return any(p0); }
201 // CHECK: define [[FNATTRS]] i1 @
202 // CHECK: %hlsl.any = call i1 @llvm.[[TARGET]].any.v4i64
203 // CHECK: ret i1 %hlsl.any
204 bool test_any_uint64_t4(uint64_t4 p0) { return any(p0); }
206 // CHECK: define [[FNATTRS]] i1 @
207 // CHECK: %hlsl.any = call i1 @llvm.[[TARGET]].any.i1
208 // CHECK: ret i1 %hlsl.any
209 bool test_any_bool(bool p0) { return any(p0); }
211 // CHECK: define [[FNATTRS]] i1 @
212 // CHECK: %hlsl.any = call i1 @llvm.[[TARGET]].any.v2i1
213 // CHECK: ret i1 %hlsl.any
214 bool test_any_bool2(bool2 p0) { return any(p0); }
216 // CHECK: define [[FNATTRS]] i1 @
217 // CHECK: %hlsl.any = call i1 @llvm.[[TARGET]].any.v3i1
218 // CHECK: ret i1 %hlsl.any
219 bool test_any_bool3(bool3 p0) { return any(p0); }
221 // CHECK: define [[FNATTRS]] i1 @
222 // CHECK: %hlsl.any = call i1 @llvm.[[TARGET]].any.v4i1
223 // CHECK: ret i1 %hlsl.any
224 bool test_any_bool4(bool4 p0) { return any(p0); }