Mercurial > libpostproc.hg
comparison postprocess_altivec_template.c @ 102:eeb4558c950a libpostproc
Remove declarations after statements from doVertDefFilter_altivec
| author | lu_zero |
|---|---|
| date | Sun, 23 Mar 2008 15:39:39 +0000 |
| parents | db57626d7d76 |
| children | 53295ae2d45e |
comparison
equal
deleted
inserted
replaced
| 101:db57626d7d76 | 102:eeb4558c950a |
|---|---|
| 415 vector by assuming (stride % 16) == 0, unfortunately | 415 vector by assuming (stride % 16) == 0, unfortunately |
| 416 this is not always true. Quite a lot of load/stores | 416 this is not always true. Quite a lot of load/stores |
| 417 can be removed by assuming proper alignment of | 417 can be removed by assuming proper alignment of |
| 418 src & stride :-( | 418 src & stride :-( |
| 419 */ | 419 */ |
| 420 uint8_t *src2 = src; | 420 uint8_t *src2 = src + stride*3; |
| 421 const vector signed int zero = vec_splat_s32(0); | 421 const vector signed int zero = vec_splat_s32(0); |
| 422 DECLARE_ALIGNED(16, short, qp[8]); | 422 DECLARE_ALIGNED(16, short, qp[8]) = {8*c->QP}; |
| 423 qp[0] = 8*c->QP; | 423 vector signed short vqp = vec_splat( |
| 424 vector signed short vqp = vec_ld(0, qp); | 424 (vector signed short)vec_ld(0, qp), 0); |
| 425 vqp = vec_splat(vqp, 0); | |
| 426 | 425 |
| 427 #define LOAD_LINE(i) \ | 426 #define LOAD_LINE(i) \ |
| 428 const vector unsigned char perm##i = \ | 427 const vector unsigned char perm##i = \ |
| 429 vec_lvsl(i * stride, src2); \ | 428 vec_lvsl(i * stride, src2); \ |
| 430 const vector unsigned char vbA##i = \ | 429 const vector unsigned char vbA##i = \ |
| 434 const vector unsigned char vbT##i = \ | 433 const vector unsigned char vbT##i = \ |
| 435 vec_perm(vbA##i, vbB##i, perm##i); \ | 434 vec_perm(vbA##i, vbB##i, perm##i); \ |
| 436 const vector signed short vb##i = \ | 435 const vector signed short vb##i = \ |
| 437 (vector signed short)vec_mergeh((vector unsigned char)zero, \ | 436 (vector signed short)vec_mergeh((vector unsigned char)zero, \ |
| 438 (vector unsigned char)vbT##i) | 437 (vector unsigned char)vbT##i) |
| 439 | |
| 440 src2 += stride*3; | |
| 441 | 438 |
| 442 LOAD_LINE(1); | 439 LOAD_LINE(1); |
| 443 LOAD_LINE(2); | 440 LOAD_LINE(2); |
| 444 LOAD_LINE(3); | 441 LOAD_LINE(3); |
| 445 LOAD_LINE(4); | 442 LOAD_LINE(4); |
| 511 const vector signed char neg1 = vec_splat_s8(-1); | 508 const vector signed char neg1 = vec_splat_s8(-1); |
| 512 const vector unsigned char permHH = (const vector unsigned char)AVV(0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, | 509 const vector unsigned char permHH = (const vector unsigned char)AVV(0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, |
| 513 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F); | 510 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F); |
| 514 | 511 |
| 515 #define STORE(i) \ | 512 #define STORE(i) \ |
| 516 const vector unsigned char perms##i = \ | 513 { const vector unsigned char perms##i = \ |
| 517 vec_lvsr(i * stride, src2); \ | 514 vec_lvsr(i * stride, src2); \ |
| 518 const vector unsigned char vg##i = \ | 515 const vector unsigned char vg##i = \ |
| 519 vec_perm(st##i, vbT##i, permHH); \ | 516 vec_perm(st##i, vbT##i, permHH); \ |
| 520 const vector unsigned char mask##i = \ | 517 const vector unsigned char mask##i = \ |
| 521 vec_perm((vector unsigned char)zero, (vector unsigned char)neg1, perms##i); \ | 518 vec_perm((vector unsigned char)zero, (vector unsigned char)neg1, perms##i); \ |
| 524 const vector unsigned char svA##i = \ | 521 const vector unsigned char svA##i = \ |
| 525 vec_sel(vbA##i, vg2##i, mask##i); \ | 522 vec_sel(vbA##i, vg2##i, mask##i); \ |
| 526 const vector unsigned char svB##i = \ | 523 const vector unsigned char svB##i = \ |
| 527 vec_sel(vg2##i, vbB##i, mask##i); \ | 524 vec_sel(vg2##i, vbB##i, mask##i); \ |
| 528 vec_st(svA##i, i * stride, src2); \ | 525 vec_st(svA##i, i * stride, src2); \ |
| 529 vec_st(svB##i, i * stride + 16, src2) | 526 vec_st(svB##i, i * stride + 16, src2);} |
| 530 | 527 |
| 531 STORE(4); | 528 STORE(4) |
| 532 STORE(5); | 529 STORE(5) |
| 533 } | 530 } |
| 534 | 531 |
| 535 static inline void dering_altivec(uint8_t src[], int stride, PPContext *c) { | 532 static inline void dering_altivec(uint8_t src[], int stride, PPContext *c) { |
| 536 /* | 533 /* |
| 537 this code makes no assumption on src or stride. | 534 this code makes no assumption on src or stride. |
