comparison postprocess_altivec_template.c @ 99:fa0ecbc87f51 libpostproc

Reorder declarations in vertClassify_altivec
author lu_zero
date Sun, 23 Mar 2008 15:29:22 +0000
parents e565483b1193
children b944f0b99b23
comparison
equal deleted inserted replaced
98:e565483b1193 99:fa0ecbc87f51
60 this code makes no assumption on src or stride. 60 this code makes no assumption on src or stride.
61 One could remove the recomputation of the perm 61 One could remove the recomputation of the perm
62 vector by assuming (stride % 16) == 0, unfortunately 62 vector by assuming (stride % 16) == 0, unfortunately
63 this is not always true. 63 this is not always true.
64 */ 64 */
65 DECLARE_ALIGNED(16, short, data[8]); 65 DECLARE_ALIGNED(16, short, data[8]) =
66 {
67 ((c->nonBQP*c->ppMode.baseDcDiff)>>8) + 1,
68 data[0] * 2 + 1,
69 c->QP * 2,
70 c->QP * 4
71 };
66 int numEq; 72 int numEq;
67 uint8_t *src2 = src; 73 uint8_t *src2 = src;
68 vector signed short v_dcOffset; 74 vector signed short v_dcOffset;
69 vector signed short v2QP; 75 vector signed short v2QP;
70 vector unsigned short v4QP; 76 vector unsigned short v4QP;
73 const int srcAlign = ((unsigned long)src2 % 16); 79 const int srcAlign = ((unsigned long)src2 % 16);
74 const int two_vectors = ((srcAlign > 8) || properStride) ? 1 : 0; 80 const int two_vectors = ((srcAlign > 8) || properStride) ? 1 : 0;
75 const vector signed int zero = vec_splat_s32(0); 81 const vector signed int zero = vec_splat_s32(0);
76 const vector signed short mask = vec_splat_s16(1); 82 const vector signed short mask = vec_splat_s16(1);
77 vector signed int v_numEq = vec_splat_s32(0); 83 vector signed int v_numEq = vec_splat_s32(0);
78
79 data[0] = ((c->nonBQP*c->ppMode.baseDcDiff)>>8) + 1;
80 data[1] = data[0] * 2 + 1;
81 data[2] = c->QP * 2;
82 data[3] = c->QP * 4;
83 vector signed short v_data = vec_ld(0, data); 84 vector signed short v_data = vec_ld(0, data);
85 vector signed short v_srcAss0, v_srcAss1, v_srcAss2, v_srcAss3,
86 v_srcAss4, v_srcAss5, v_srcAss6, v_srcAss7;
87
84 v_dcOffset = vec_splat(v_data, 0); 88 v_dcOffset = vec_splat(v_data, 0);
85 v_dcThreshold = (vector unsigned short)vec_splat(v_data, 1); 89 v_dcThreshold = (vector unsigned short)vec_splat(v_data, 1);
86 v2QP = vec_splat(v_data, 2); 90 v2QP = vec_splat(v_data, 2);
87 v4QP = (vector unsigned short)vec_splat(v_data, 3); 91 v4QP = (vector unsigned short)vec_splat(v_data, 3);
88 92
89 src2 += stride * 4; 93 src2 += stride * 4;
90 94
91 vector signed short v_srcAss0, v_srcAss1, v_srcAss2, v_srcAss3, v_srcAss4, v_srcAss5, v_srcAss6, v_srcAss7;
92 95
93 #define LOAD_LINE(i) \ 96 #define LOAD_LINE(i) \
94 register int j##i = i * stride; \ 97 register int j##i = i * stride; \
95 vector unsigned char perm##i = vec_lvsl(j##i, src2); \ 98 vector unsigned char perm##i = vec_lvsl(j##i, src2); \
96 const vector unsigned char v_srcA1##i = vec_ld(j##i, src2); \ 99 const vector unsigned char v_srcA1##i = vec_ld(j##i, src2); \