@@ -251,3 +251,39 @@ vector4float func_21(vector4double x) {
251
251
}
252
252
// CHECK-LABEL: @func_21
253
253
// STRICT: call <4 x float> @llvm.experimental.constrained.fptrunc.v4f32.v4f64(<4 x double> {{.*}}, metadata !"round.upward", metadata !"fpexcept.strict")
254
+
255
+ typedef short vector8short __attribute__((__vector_size__ (16 )));
256
+ typedef double vector8double __attribute__((__vector_size__ (64 )));
257
+ vector8double func_24 (vector8short x ) {
258
+ #pragma STDC FENV_ROUND FE_TOWARDZERO
259
+ return __builtin_convertvector (x , vector8double );
260
+ }
261
+ // CHECK-LABEL: @func_24
262
+ // STRICT: call <8 x double> @llvm.experimental.constrained.sitofp.v8f64.v8i16(<8 x i16> {{.*}}, metadata !"round.towardzero", metadata !"fpexcept.strict")
263
+
264
+ typedef unsigned int vector16uint __attribute__((__vector_size__ (64 )));
265
+ typedef double vector16double __attribute__((__vector_size__ (128 )));
266
+ vector16double func_25 (vector16uint x ) {
267
+ #pragma STDC FENV_ROUND FE_DOWNWARD
268
+ return __builtin_convertvector (x , vector16double );
269
+ }
270
+ // CHECK-LABEL: @func_25
271
+ // STRICT: call <16 x double> @llvm.experimental.constrained.uitofp.v16f64.v16i32(<16 x i32> {{.*}}, metadata !"round.downward", metadata !"fpexcept.strict")
272
+
273
+ typedef float vector2float __attribute__((__vector_size__ (8 )));
274
+ typedef char vector2char __attribute__((__vector_size__ (2 )));
275
+ vector2char func_22 (vector2float x ) {
276
+ #pragma float_control(except, off)
277
+ return __builtin_convertvector (x , vector2char );
278
+ }
279
+ // CHECK-LABEL: @func_22
280
+ // STRICT: call <2 x i8> @llvm.experimental.constrained.fptosi.v2i8.v2f32(<2 x float> {{.*}}, metadata !"fpexcept.ignore")
281
+
282
+ typedef float vector3float __attribute__((__vector_size__ (12 )));
283
+ typedef unsigned long long vector3ulong __attribute__((__vector_size__ (24 )));
284
+ vector3ulong func_23 (vector3float x ) {
285
+ #pragma float_control(except, off)
286
+ return __builtin_convertvector (x , vector3ulong );
287
+ }
288
+ // CHECK-LABEL: @func_23
289
+ // STRICT: call <3 x i64> @llvm.experimental.constrained.fptoui.v3i64.v3f32(<3 x float> {{.*}}, metadata !"fpexcept.ignore")
0 commit comments