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 signed int
vcfeb(vector float a)7 vcfeb (vector float a)
8 {
9   return vec_signed (a);
10 }
11 
12 /* { dg-final { scan-assembler-times "vcfeb.*\n\tvcfeb.*fix_truncv4sfv4si2" 1 } } */
13 
14 vector signed long long
vcgdb(vector double a)15 vcgdb (vector double a)
16 {
17   return vec_signed (a);
18 }
19 
20 /* { dg-final { scan-assembler-times "vcgdb.*\n\tvcgdb.*fix_truncv2dfv2di2" 1 } } */
21 
22 vector signed int
vcfeb_mem(vector float * a)23 vcfeb_mem (vector float *a)
24 {
25   return vec_signed (*a);
26 }
27 
28 vector signed long long
vcgdb_mem(vector double * a)29 vcgdb_mem (vector double *a)
30 {
31   return vec_signed (*a);
32 }
33 
34 vector signed int
vcfeb_imm()35 vcfeb_imm ()
36 {
37   return vec_signed ((vector float) { 1.0f, 2.0f });
38 }
39 
40 vector signed long long
vcgdb_imm()41 vcgdb_imm ()
42 {
43   return vec_signed ((vector double){ 1.0, 2.0 });
44 }
45 
46 /* { dg-final { scan-assembler-times "vcfeb\t" 3 } } */
47 /* { dg-final { scan-assembler-times "vcgdb\t" 3 } } */
48