1 /* Verify that overloaded built-ins for vec_merge* with int
2    inputs produce the right code.  */
3 
4 /* { dg-do compile } */
5 /* { dg-require-effective-target powerpc_altivec_ok } */
6 /* { dg-options "-maltivec -O2 " } */
7 
8 #include <altivec.h>
9 
10 vector bool int
testbi_l(vector bool int vbi2,vector bool int vbi3)11 testbi_l (vector bool int vbi2, vector bool int vbi3)
12 {
13   return vec_mergel (vbi2, vbi3);
14 }
15 
16 vector signed int
testsi_l(vector signed int vsi2,vector signed int vsi3)17 testsi_l (vector signed int vsi2, vector signed int vsi3)
18 {
19   return vec_mergel (vsi2, vsi3);
20 }
21 
22 vector unsigned int
testui_l(vector unsigned int vui2,vector unsigned int vui3)23 testui_l (vector unsigned int vui2, vector unsigned int vui3)
24 {
25   return vec_mergel (vui2, vui3);
26 }
27 
28 vector bool int
testbi_h(vector bool int vbi2,vector bool int vbi3)29 testbi_h (vector bool int vbi2, vector bool int vbi3)
30 {
31   return vec_mergeh (vbi2, vbi3);
32 }
33 
34 vector signed int
testsi_h(vector signed int vsi2,vector signed int vsi3)35 testsi_h (vector signed int vsi2, vector signed int vsi3)
36 {
37   return vec_mergeh (vsi2, vsi3);
38 }
39 
40 vector unsigned int
testui_h(vector unsigned int vui2,vector unsigned int vui3)41 testui_h (vector unsigned int vui2, vector unsigned int vui3)
42 {
43   return vec_mergeh (vui2, vui3);
44 }
45 
46 /* { dg-final { scan-assembler-times "vmrghw|xxmrghw" 3 } } */
47 /* { dg-final { scan-assembler-times "vmrglw|xxmrglw" 3 } } */
48 
49