1 /* Verify that overloaded built-ins for vec_st* with char
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 void
testst_1(vector signed char vsc1,int i1,vector signed char * vscp)11 testst_1 (vector signed char vsc1, int i1, vector signed char * vscp)
12 {
13 	return vec_st(vsc1, i1, vscp);
14 }
15 
16 void
testst_2(vector signed char vsc1,int i1,signed char * scp)17 testst_2 (vector signed char vsc1, int i1, signed char * scp)
18 {
19 	return vec_st(vsc1, i1, scp);
20 }
21 
22 void
testst_3(vector unsigned char vuc1,int i1,vector unsigned char * vscp)23 testst_3 (vector unsigned char vuc1, int i1, vector unsigned char * vscp)
24 {
25 	return vec_st(vuc1, i1, vscp);
26 }
27 
28 void
testst_4(vector unsigned char vuc1,int i1,unsigned char * scp)29 testst_4 (vector unsigned char vuc1, int i1, unsigned char * scp)
30 {
31 	return vec_st(vuc1, i1, scp);
32 }
33 
34 void
testst_5(vector bool char vbc1,int i1,vector bool char * vbcp)35 testst_5 (vector bool char vbc1, int i1, vector bool char * vbcp)
36 {
37 	return vec_st(vbc1, i1, vbcp);
38 }
39 
40 void
testst_6(vector bool char vbc1,int i1,unsigned char * vucp)41 testst_6 (vector bool char vbc1, int i1, unsigned char * vucp)
42 {
43 	return vec_st(vbc1, i1, vucp);
44 }
45 
46 void
testst_7(vector bool char vbc1,int i1,signed char * vscp)47 testst_7 (vector bool char vbc1, int i1, signed char * vscp)
48 {
49 	return vec_st(vbc1, i1, vscp);
50 }
51 
52 void
testst_cst1(vector signed char vsc1,int i1,vector signed char * vscp)53 testst_cst1 (vector signed char vsc1, int i1, vector signed char * vscp)
54 {
55 	return vec_st(vsc1, 12, vscp);
56 }
57 
58 void
testst_cst2(vector signed char vsc1,int i1,signed char * scp)59 testst_cst2 (vector signed char vsc1, int i1, signed char * scp)
60 {
61 	return vec_st(vsc1, 16, scp);
62 }
63 
64 void
testst_cst3(vector unsigned char vuc1,int i1,vector unsigned char * vscp)65 testst_cst3 (vector unsigned char vuc1, int i1, vector unsigned char * vscp)
66 {
67 	return vec_st(vuc1, 20, vscp);
68 }
69 
70 void
testst_cst4(vector unsigned char vuc1,int i1,unsigned char * scp)71 testst_cst4 (vector unsigned char vuc1, int i1, unsigned char * scp)
72 {
73 	return vec_st(vuc1, 24, scp);
74 }
75 
76 void
testst_cst5(vector bool char vbc1,int i1,vector bool char * vbcp)77 testst_cst5 (vector bool char vbc1, int i1, vector bool char * vbcp)
78 {
79 	return vec_st(vbc1, 28, vbcp);
80 }
81 
82 void
testst_cst6(vector bool char vbc1,int i1,unsigned char * vucp)83 testst_cst6 (vector bool char vbc1, int i1, unsigned char * vucp)
84 {
85 	return vec_st(vbc1, 32, vucp);
86 }
87 
88 void
testst_cst7(vector bool char vbc1,int i1,signed char * vscp)89 testst_cst7 (vector bool char vbc1, int i1, signed char * vscp)
90 {
91 	return vec_st(vbc1, 36, vscp);
92 }
93 
94 /* { dg-final { scan-assembler-times {\m(?:stvx|stxv|stxvx)\M} 14 } } */
95