1 /* { dg-do compile } */
10 extern vector
signed short table
[8];
11 extern vector
signed short slope_cos
[8];
14 vector
signed short lsfq
[],
15 vector
signed short lspq
[]
18 vector
signed short Q17_con
= ((vector
signed short){20861,20861,20861,20861,20861,20861,20861,20861});
19 vector
unsigned char perm1
= ((vector
unsigned char){0, 8, 1, 9, 2, 10, 3,
20 11, 4, 12, 5 ,13, 6, 14, 7, 15});
21 vector
unsigned char PerIndex
, tmpIndex
;
22 vector
signed short tmp0
, tmp1
, tmp2
, tmp3
;
23 vector
signed short stmp0
, stmp1
, stmp2
, stmp3
;
24 vector
signed short index0
, index1
, offset0
, offset1
;
25 vector
signed short table0
, table1
, slope0
, slope1
;
26 vector
unsigned short select
;
27 vector
signed int L_tmp0
, L_tmp1
, L_tmp2
, L_tmp3
;
30 tmp0
= vec_madds(lsfq
[0], Q17_con
, (((vector
signed short){0,0,0,0,0,0,0,0})) );
31 tmp1
= vec_madds(lsfq
[1], Q17_con
, (((vector
signed short){0,0,0,0,0,0,0,0})) );
34 offset0
= vec_and(tmp0
, (((vector
signed short){0x00ff,0x00ff,0x00ff,0x00ff,0x00ff,0x00ff,0x00ff,0x00ff})) );
35 offset1
= vec_and(tmp1
, (((vector
signed short){0x00ff,0x00ff,0x00ff,0x00ff,0x00ff,0x00ff,0x00ff,0x00ff})) );
38 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})) );
39 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})) );
43 tmp0
= vec_sl(index0
, (vector
unsigned short)((((vector
signed short){1,1,1,1,1,1,1,1})) ));
44 PerIndex
= (vector
unsigned char)vec_packs(tmp0
, vec_add(tmp0
, (((vector
signed short){1,1,1,1,1,1,1,1})) ));
45 PerIndex
= vec_perm(PerIndex
, PerIndex
, perm1
);
48 tmp0
= vec_perm(table
[0], table
[1], PerIndex
);
49 stmp0
= vec_perm(slope_cos
[0], slope_cos
[1], PerIndex
);
51 tmpIndex
= vec_sub(PerIndex
, (((vector
unsigned char){32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32})) );
52 tmp1
= vec_perm(table
[2], table
[3], tmpIndex
);
53 stmp1
= vec_perm(slope_cos
[2], slope_cos
[3], tmpIndex
);
55 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})) );
56 tmp2
= vec_sel(tmp0
, tmp1
, select
);
57 stmp2
= vec_sel(stmp0
, stmp1
, select
);
59 tmpIndex
= vec_sub(tmpIndex
, (((vector
unsigned char){32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32})) );
60 tmp0
= vec_perm(table
[4], table
[5], tmpIndex
);
61 stmp0
= vec_perm(slope_cos
[4], slope_cos
[5], tmpIndex
);
63 tmpIndex
= vec_sub(tmpIndex
, (((vector
unsigned char){32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32})) );
64 tmp1
= vec_perm(table
[6], table
[7], tmpIndex
);
65 stmp1
= vec_perm(slope_cos
[6], slope_cos
[7], tmpIndex
);
67 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})) );
68 tmp3
= vec_sel(tmp0
, tmp1
, select
);
69 stmp3
= vec_sel(stmp0
, stmp1
, select
);
71 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})) );
72 table0
= vec_sel(tmp2
, tmp3
, select
);
73 slope0
= vec_sel(stmp2
, stmp3
, select
);
75 tmp0
= vec_sl(index1
, (vector
unsigned short)((((vector
signed short){1,1,1,1,1,1,1,1})) ));
76 PerIndex
= (vector
unsigned char)vec_packs(tmp0
, vec_add(tmp0
, (((vector
signed short){1,1,1,1,1,1,1,1})) ));
77 PerIndex
= vec_perm(PerIndex
, PerIndex
, perm1
);
80 tmp0
= vec_perm(table
[0], table
[1], PerIndex
);
81 stmp0
= vec_perm(slope_cos
[0], slope_cos
[1], PerIndex
);
83 tmpIndex
= vec_sub(PerIndex
, (((vector
unsigned char){32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32})) );
84 tmp1
= vec_perm(table
[2], table
[3], tmpIndex
);
85 stmp1
= vec_perm(slope_cos
[2], slope_cos
[3], tmpIndex
);
87 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})) );
88 tmp2
= vec_sel(tmp0
, tmp1
, select
);
89 stmp2
= vec_sel(stmp0
, stmp1
, select
);
91 tmpIndex
= vec_sub(tmpIndex
, (((vector
unsigned char){32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32})) );
92 tmp0
= vec_perm(table
[4], table
[5], tmpIndex
);
93 stmp0
= vec_perm(slope_cos
[4], slope_cos
[5], tmpIndex
);
95 tmpIndex
= vec_sub(tmpIndex
, (((vector
unsigned char){32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32})) );
96 tmp1
= vec_perm(table
[6], table
[7], tmpIndex
);
97 stmp1
= vec_perm(slope_cos
[6], slope_cos
[7], tmpIndex
);
99 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})) );
100 tmp3
= vec_sel(tmp0
, tmp1
, select
);
101 stmp3
= vec_sel(stmp0
, stmp1
, select
);
103 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})) );
104 table1
= vec_sel(tmp2
, tmp3
, select
);
105 slope1
= vec_sel(stmp2
, stmp3
, select
);
109 L_tmp0
= vec_sra(vec_mule(slope0
, offset0
), (((vector
unsigned int){12,12,12,12})) );
110 L_tmp1
= vec_sra(vec_mulo(slope0
, offset0
), (((vector
unsigned int){12,12,12,12})) );
111 L_tmp2
= vec_sra(vec_mule(slope1
, offset1
), (((vector
unsigned int){12,12,12,12})) );
112 L_tmp3
= vec_sra(vec_mulo(slope1
, offset1
), (((vector
unsigned int){12,12,12,12})) );
115 tmp0
= vec_packs(L_tmp0
, L_tmp2
);
116 tmp1
= vec_packs(L_tmp1
, L_tmp3
);
117 tmp2
= vec_mergeh(tmp0
, tmp1
);
118 tmp3
= vec_mergel(tmp0
, tmp1
);
121 lspq
[0] = vec_adds(table0
, tmp2
);
122 lspq
[1] = vec_adds(table1
, tmp3
);