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 double
vcdgb(vector signed long long a)7 vcdgb (vector signed long long a)
8 {
9   return vec_double (a);
10 }
11 
12 /* { dg-final { scan-assembler-times "vcdgb.*\n\tvcdgb.*floatv2div2df2" 1 } } */
13 
14 vector double
vcdlgb(vector unsigned long long a)15 vcdlgb (vector unsigned long long a)
16 {
17   return vec_double (a);
18 }
19 
20 /* { dg-final { scan-assembler-times "vcdlgb.*\n\tvcdlgb.*floatunsv2div2df2" 1 } } */
21 
22 vector double
vcdgb_mem(vector signed long long * a)23 vcdgb_mem (vector signed long long *a)
24 {
25   return vec_double (*a);
26 }
27 
28 vector double
vcdlgb_mem(vector unsigned long long * a)29 vcdlgb_mem (vector unsigned long long *a)
30 {
31   return vec_double (*a);
32 }
33 
34 vector double
vcdgb_imm()35 vcdgb_imm ()
36 {
37   return vec_double ((vector signed long long) { 1, -2 });
38 }
39 
40 vector double
vcdlgb_imm()41 vcdlgb_imm ()
42 {
43   return vec_double ((vector unsigned long long){ 1, 2 });
44 }
45 
46 /* { dg-final { scan-assembler-times "vcdgb\t" 3 } } */
47 /* { dg-final { scan-assembler-times "vcdlgb\t" 3 } } */
48