1 /* { dg-do compile } */
2 /* { dg-options "-O3 -mzarch -march=arch13 -mzvector -fno-asynchronous-unwind-tables -dp" } */
3 
4 #include <vecintrin.h>
5 
6 vector unsigned int
vclfeb(vector float a)7 vclfeb (vector float a)
8 {
9   return vec_unsigned (a);
10 }
11 
12 /* { dg-final { scan-assembler-times "vclfeb.*\n\tvclfeb.*fixuns_truncv4sfv4si2" 1 } } */
13 
14 vector unsigned long long
vclgdb(vector double a)15 vclgdb (vector double a)
16 {
17   return vec_unsigned (a);
18 }
19 
20 /* { dg-final { scan-assembler-times "vclgdb.*\n\tvclgdb.*fixuns_truncv2dfv2di2" 1 } } */
21 
22 vector unsigned int
vclfeb_mem(vector float * a)23 vclfeb_mem (vector float *a)
24 {
25   return vec_unsigned (*a);
26 }
27 
28 vector unsigned long long
vclgdb_mem(vector double * a)29 vclgdb_mem (vector double *a)
30 {
31   return vec_unsigned (*a);
32 }
33 
34 vector unsigned int
vclfeb_imm()35 vclfeb_imm ()
36 {
37   return vec_unsigned ((vector float) { 1.0f, 2.0f });
38 }
39 
40 vector unsigned long long
vclgdb_imm()41 vclgdb_imm ()
42 {
43   return vec_unsigned ((vector double){ 1.0, 2.0 });
44 }
45 
46 /* { dg-final { scan-assembler-times "vclfeb\t" 3 } } */
47 /* { dg-final { scan-assembler-times "vclgdb\t" 3 } } */
48