1 /* { dg-do compile } */
3 extern vector
signed short table
[8];
4 extern vector
signed short slope_cos
[8];
5 extern vector
signed short slope_acos
[8];
8 vector
signed short lsfq
[],
9 vector
signed short lspq
[]
12 vector
signed short Q17_con
= ((vector
signed short){20861,20861,20861,20861,20861,20861,20861,20861});
13 vector
unsigned char perm1
= ((vector
unsigned char){0, 8, 1, 9, 2, 10, 3,
14 11, 4, 12, 5 ,13, 6, 14, 7, 15});
15 vector
unsigned char PerIndex
, tmpIndex
;
16 vector
signed short tmp0
, tmp1
, tmp2
, tmp3
;
17 vector
signed short stmp0
, stmp1
, stmp2
, stmp3
;
18 vector
signed short index0
, index1
, offset0
, offset1
;
19 vector
signed short table0
, table1
, slope0
, slope1
;
20 vector
unsigned short select
;
21 vector
signed int L_tmp0
, L_tmp1
, L_tmp2
, L_tmp3
;
24 tmp0
= vec_madds(lsfq
[0], Q17_con
, (((vector
signed short){0,0,0,0,0,0,0,0})) );
25 tmp1
= vec_madds(lsfq
[1], Q17_con
, (((vector
signed short){0,0,0,0,0,0,0,0})) );
28 offset0
= vec_and(tmp0
, (((vector
signed short){0x00ff,0x00ff,0x00ff,0x00ff,0x00ff,0x00ff,0x00ff,0x00ff})) );
29 offset1
= vec_and(tmp1
, (((vector
signed short){0x00ff,0x00ff,0x00ff,0x00ff,0x00ff,0x00ff,0x00ff,0x00ff})) );
32 index0
= vec_min(vec_sra(tmp0
, (((vector
unsigned short){8,8,8,8,8,8,8,8})) ), (((vector
signed short){63,63,63,63,63,63,63,63})) );
33 index1
= vec_min(vec_sra(tmp1
, (((vector
unsigned short){8,8,8,8,8,8,8,8})) ), (((vector
signed short){63,63,63,63,63,63,63,63})) );
37 tmp0
= vec_sl(index0
, (vector
unsigned short)((((vector
signed short){1,1,1,1,1,1,1,1})) ));
38 PerIndex
= (vector
unsigned char)vec_packs(tmp0
, vec_add(tmp0
, (((vector
signed short){1,1,1,1,1,1,1,1})) ));
39 PerIndex
= vec_perm(PerIndex
, PerIndex
, perm1
);
42 tmp0
= vec_perm(table
[0], table
[1], PerIndex
);
43 stmp0
= vec_perm(slope_cos
[0], slope_cos
[1], PerIndex
);
45 tmpIndex
= vec_sub(PerIndex
, (((vector
unsigned char){32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32})) );
46 tmp1
= vec_perm(table
[2], table
[3], tmpIndex
);
47 stmp1
= vec_perm(slope_cos
[2], slope_cos
[3], tmpIndex
);
49 select
= (vector
unsigned short)vec_cmpgt(PerIndex
, (((vector
unsigned char){31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31})) );
50 tmp2
= vec_sel(tmp0
, tmp1
, select
);
51 stmp2
= vec_sel(stmp0
, stmp1
, select
);
53 tmpIndex
= vec_sub(tmpIndex
, (((vector
unsigned char){32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32})) );
54 tmp0
= vec_perm(table
[4], table
[5], tmpIndex
);
55 stmp0
= vec_perm(slope_cos
[4], slope_cos
[5], tmpIndex
);
57 tmpIndex
= vec_sub(tmpIndex
, (((vector
unsigned char){32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32})) );
58 tmp1
= vec_perm(table
[6], table
[7], tmpIndex
);
59 stmp1
= vec_perm(slope_cos
[6], slope_cos
[7], tmpIndex
);
61 select
= (vector
unsigned short)vec_cmpgt(PerIndex
, (((vector
unsigned char){95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95})) );
62 tmp3
= vec_sel(tmp0
, tmp1
, select
);
63 stmp3
= vec_sel(stmp0
, stmp1
, select
);
65 select
= (vector
unsigned short)vec_cmpgt(PerIndex
, (((vector
unsigned char){63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63})) );
66 table0
= vec_sel(tmp2
, tmp3
, select
);
67 slope0
= vec_sel(stmp2
, stmp3
, select
);
69 tmp0
= vec_sl(index1
, (vector
unsigned short)((((vector
signed short){1,1,1,1,1,1,1,1})) ));
70 PerIndex
= (vector
unsigned char)vec_packs(tmp0
, vec_add(tmp0
, (((vector
signed short){1,1,1,1,1,1,1,1})) ));
71 PerIndex
= vec_perm(PerIndex
, PerIndex
, perm1
);
74 tmp0
= vec_perm(table
[0], table
[1], PerIndex
);
75 stmp0
= vec_perm(slope_cos
[0], slope_cos
[1], PerIndex
);
77 tmpIndex
= vec_sub(PerIndex
, (((vector
unsigned char){32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32})) );
78 tmp1
= vec_perm(table
[2], table
[3], tmpIndex
);
79 stmp1
= vec_perm(slope_cos
[2], slope_cos
[3], tmpIndex
);
81 select
= (vector
unsigned short)vec_cmpgt(PerIndex
, (((vector
unsigned char){31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31})) );
82 tmp2
= vec_sel(tmp0
, tmp1
, select
);
83 stmp2
= vec_sel(stmp0
, stmp1
, select
);
85 tmpIndex
= vec_sub(tmpIndex
, (((vector
unsigned char){32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32})) );
86 tmp0
= vec_perm(table
[4], table
[5], tmpIndex
);
87 stmp0
= vec_perm(slope_cos
[4], slope_cos
[5], tmpIndex
);
89 tmpIndex
= vec_sub(tmpIndex
, (((vector
unsigned char){32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32})) );
90 tmp1
= vec_perm(table
[6], table
[7], tmpIndex
);
91 stmp1
= vec_perm(slope_cos
[6], slope_cos
[7], tmpIndex
);
93 select
= (vector
unsigned short)vec_cmpgt(PerIndex
, (((vector
unsigned char){95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95})) );
94 tmp3
= vec_sel(tmp0
, tmp1
, select
);
95 stmp3
= vec_sel(stmp0
, stmp1
, select
);
97 select
= (vector
unsigned short)vec_cmpgt(PerIndex
, (((vector
unsigned char){63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63})) );
98 table1
= vec_sel(tmp2
, tmp3
, select
);
99 slope1
= vec_sel(stmp2
, stmp3
, select
);
103 L_tmp0
= vec_sra(vec_mule(slope0
, offset0
), (((vector
unsigned int){12,12,12,12})) );
104 L_tmp1
= vec_sra(vec_mulo(slope0
, offset0
), (((vector
unsigned int){12,12,12,12})) );
105 L_tmp2
= vec_sra(vec_mule(slope1
, offset1
), (((vector
unsigned int){12,12,12,12})) );
106 L_tmp3
= vec_sra(vec_mulo(slope1
, offset1
), (((vector
unsigned int){12,12,12,12})) );
109 tmp0
= vec_packs(L_tmp0
, L_tmp2
);
110 tmp1
= vec_packs(L_tmp1
, L_tmp3
);
111 tmp2
= vec_mergeh(tmp0
, tmp1
);
112 tmp3
= vec_mergel(tmp0
, tmp1
);
115 lspq
[0] = vec_adds(table0
, tmp2
);
116 lspq
[1] = vec_adds(table1
, tmp3
);