Mercurial > libpostproc.hg
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); \ |
