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