| OLD | NEW |
| 1 ; | 1 ; |
| 2 ; Copyright (c) 2014 The WebM project authors. All Rights Reserved. | 2 ; Copyright (c) 2014 The WebM project authors. All Rights Reserved. |
| 3 ; | 3 ; |
| 4 ; Use of this source code is governed by a BSD-style license | 4 ; Use of this source code is governed by a BSD-style license |
| 5 ; that can be found in the LICENSE file in the root of the source | 5 ; that can be found in the LICENSE file in the root of the source |
| 6 ; tree. An additional intellectual property rights grant can be found | 6 ; tree. An additional intellectual property rights grant can be found |
| 7 ; in the file PATENTS. All contributing project authors may | 7 ; in the file PATENTS. All contributing project authors may |
| 8 ; be found in the AUTHORS file in the root of the source tree. | 8 ; be found in the AUTHORS file in the root of the source tree. |
| 9 ; | 9 ; |
| 10 | 10 |
| (...skipping 297 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 308 vsubl.u8 q3, d2, d0 | 308 vsubl.u8 q3, d2, d0 |
| 309 | 309 |
| 310 ; Load left row by row and compute left + (above - ytop_left) | 310 ; Load left row by row and compute left + (above - ytop_left) |
| 311 ; 1st row and 2nd row | 311 ; 1st row and 2nd row |
| 312 ldrb r12, [r3], #1 | 312 ldrb r12, [r3], #1 |
| 313 ldrb r2, [r3], #1 | 313 ldrb r2, [r3], #1 |
| 314 vdup.u16 q1, r12 | 314 vdup.u16 q1, r12 |
| 315 vdup.u16 q2, r2 | 315 vdup.u16 q2, r2 |
| 316 vadd.s16 q1, q1, q3 | 316 vadd.s16 q1, q1, q3 |
| 317 vadd.s16 q2, q2, q3 | 317 vadd.s16 q2, q2, q3 |
| 318 vqshrun.s16 d0, q1, #0 | 318 vqmovun.s16 d0, q1 |
| 319 vqshrun.s16 d1, q2, #0 | 319 vqmovun.s16 d1, q2 |
| 320 vst1.32 {d0[0]}, [r0], r1 | 320 vst1.32 {d0[0]}, [r0], r1 |
| 321 vst1.32 {d1[0]}, [r0], r1 | 321 vst1.32 {d1[0]}, [r0], r1 |
| 322 | 322 |
| 323 ; 3rd row and 4th row | 323 ; 3rd row and 4th row |
| 324 ldrb r12, [r3], #1 | 324 ldrb r12, [r3], #1 |
| 325 ldrb r2, [r3], #1 | 325 ldrb r2, [r3], #1 |
| 326 vdup.u16 q1, r12 | 326 vdup.u16 q1, r12 |
| 327 vdup.u16 q2, r2 | 327 vdup.u16 q2, r2 |
| 328 vadd.s16 q1, q1, q3 | 328 vadd.s16 q1, q1, q3 |
| 329 vadd.s16 q2, q2, q3 | 329 vadd.s16 q2, q2, q3 |
| 330 vqshrun.s16 d0, q1, #0 | 330 vqmovun.s16 d0, q1 |
| 331 vqshrun.s16 d1, q2, #0 | 331 vqmovun.s16 d1, q2 |
| 332 vst1.32 {d0[0]}, [r0], r1 | 332 vst1.32 {d0[0]}, [r0], r1 |
| 333 vst1.32 {d1[0]}, [r0], r1 | 333 vst1.32 {d1[0]}, [r0], r1 |
| 334 bx lr | 334 bx lr |
| 335 ENDP ; |vp9_tm_predictor_4x4_neon| | 335 ENDP ; |vp9_tm_predictor_4x4_neon| |
| 336 | 336 |
| 337 ;void vp9_tm_predictor_8x8_neon (uint8_t *dst, ptrdiff_t y_stride, | 337 ;void vp9_tm_predictor_8x8_neon (uint8_t *dst, ptrdiff_t y_stride, |
| 338 ; const uint8_t *above, | 338 ; const uint8_t *above, |
| 339 ; const uint8_t *left) | 339 ; const uint8_t *left) |
| 340 ; r0 uint8_t *dst | 340 ; r0 uint8_t *dst |
| 341 ; r1 ptrdiff_t y_stride | 341 ; r1 ptrdiff_t y_stride |
| (...skipping 23 matching lines...) Expand all Loading... |
| 365 vdup.16 q1, d20[1] | 365 vdup.16 q1, d20[1] |
| 366 vadd.s16 q0, q3, q0 | 366 vadd.s16 q0, q3, q0 |
| 367 vadd.s16 q1, q3, q1 | 367 vadd.s16 q1, q3, q1 |
| 368 | 368 |
| 369 ; 3rd row and 4th row | 369 ; 3rd row and 4th row |
| 370 vdup.16 q8, d20[2] | 370 vdup.16 q8, d20[2] |
| 371 vdup.16 q9, d20[3] | 371 vdup.16 q9, d20[3] |
| 372 vadd.s16 q8, q3, q8 | 372 vadd.s16 q8, q3, q8 |
| 373 vadd.s16 q9, q3, q9 | 373 vadd.s16 q9, q3, q9 |
| 374 | 374 |
| 375 vqshrun.s16 d0, q0, #0 | 375 vqmovun.s16 d0, q0 |
| 376 vqshrun.s16 d1, q1, #0 | 376 vqmovun.s16 d1, q1 |
| 377 vqshrun.s16 d2, q8, #0 | 377 vqmovun.s16 d2, q8 |
| 378 vqshrun.s16 d3, q9, #0 | 378 vqmovun.s16 d3, q9 |
| 379 | 379 |
| 380 vst1.64 {d0}, [r0], r1 | 380 vst1.64 {d0}, [r0], r1 |
| 381 vst1.64 {d1}, [r0], r1 | 381 vst1.64 {d1}, [r0], r1 |
| 382 vst1.64 {d2}, [r0], r1 | 382 vst1.64 {d2}, [r0], r1 |
| 383 vst1.64 {d3}, [r0], r1 | 383 vst1.64 {d3}, [r0], r1 |
| 384 | 384 |
| 385 ; 5th row and 6th row | 385 ; 5th row and 6th row |
| 386 vdup.16 q0, d21[0] | 386 vdup.16 q0, d21[0] |
| 387 vdup.16 q1, d21[1] | 387 vdup.16 q1, d21[1] |
| 388 vadd.s16 q0, q3, q0 | 388 vadd.s16 q0, q3, q0 |
| 389 vadd.s16 q1, q3, q1 | 389 vadd.s16 q1, q3, q1 |
| 390 | 390 |
| 391 ; 7th row and 8th row | 391 ; 7th row and 8th row |
| 392 vdup.16 q8, d21[2] | 392 vdup.16 q8, d21[2] |
| 393 vdup.16 q9, d21[3] | 393 vdup.16 q9, d21[3] |
| 394 vadd.s16 q8, q3, q8 | 394 vadd.s16 q8, q3, q8 |
| 395 vadd.s16 q9, q3, q9 | 395 vadd.s16 q9, q3, q9 |
| 396 | 396 |
| 397 vqshrun.s16 d0, q0, #0 | 397 vqmovun.s16 d0, q0 |
| 398 vqshrun.s16 d1, q1, #0 | 398 vqmovun.s16 d1, q1 |
| 399 vqshrun.s16 d2, q8, #0 | 399 vqmovun.s16 d2, q8 |
| 400 vqshrun.s16 d3, q9, #0 | 400 vqmovun.s16 d3, q9 |
| 401 | 401 |
| 402 vst1.64 {d0}, [r0], r1 | 402 vst1.64 {d0}, [r0], r1 |
| 403 vst1.64 {d1}, [r0], r1 | 403 vst1.64 {d1}, [r0], r1 |
| 404 vst1.64 {d2}, [r0], r1 | 404 vst1.64 {d2}, [r0], r1 |
| 405 vst1.64 {d3}, [r0], r1 | 405 vst1.64 {d3}, [r0], r1 |
| 406 | 406 |
| 407 bx lr | 407 bx lr |
| 408 ENDP ; |vp9_tm_predictor_8x8_neon| | 408 ENDP ; |vp9_tm_predictor_8x8_neon| |
| 409 | 409 |
| 410 ;void vp9_tm_predictor_16x16_neon (uint8_t *dst, ptrdiff_t y_stride, | 410 ;void vp9_tm_predictor_16x16_neon (uint8_t *dst, ptrdiff_t y_stride, |
| (...skipping 27 matching lines...) Expand all Loading... |
| 438 mov r2, #2 | 438 mov r2, #2 |
| 439 | 439 |
| 440 loop_16x16_neon | 440 loop_16x16_neon |
| 441 ; Process two rows. | 441 ; Process two rows. |
| 442 vdup.16 q0, d20[0] | 442 vdup.16 q0, d20[0] |
| 443 vdup.16 q8, d20[1] | 443 vdup.16 q8, d20[1] |
| 444 vadd.s16 q1, q0, q2 | 444 vadd.s16 q1, q0, q2 |
| 445 vadd.s16 q0, q0, q3 | 445 vadd.s16 q0, q0, q3 |
| 446 vadd.s16 q11, q8, q2 | 446 vadd.s16 q11, q8, q2 |
| 447 vadd.s16 q8, q8, q3 | 447 vadd.s16 q8, q8, q3 |
| 448 vqshrun.s16 d2, q1, #0 | 448 vqmovun.s16 d2, q1 |
| 449 vqshrun.s16 d3, q0, #0 | 449 vqmovun.s16 d3, q0 |
| 450 vqshrun.s16 d22, q11, #0 | 450 vqmovun.s16 d22, q11 |
| 451 vqshrun.s16 d23, q8, #0 | 451 vqmovun.s16 d23, q8 |
| 452 vdup.16 q0, d20[2] ; proload next 2 rows data | 452 vdup.16 q0, d20[2] ; proload next 2 rows data |
| 453 vdup.16 q8, d20[3] | 453 vdup.16 q8, d20[3] |
| 454 vst1.64 {d2,d3}, [r0], r1 | 454 vst1.64 {d2,d3}, [r0], r1 |
| 455 vst1.64 {d22,d23}, [r0], r1 | 455 vst1.64 {d22,d23}, [r0], r1 |
| 456 | 456 |
| 457 ; Process two rows. | 457 ; Process two rows. |
| 458 vadd.s16 q1, q0, q2 | 458 vadd.s16 q1, q0, q2 |
| 459 vadd.s16 q0, q0, q3 | 459 vadd.s16 q0, q0, q3 |
| 460 vadd.s16 q11, q8, q2 | 460 vadd.s16 q11, q8, q2 |
| 461 vadd.s16 q8, q8, q3 | 461 vadd.s16 q8, q8, q3 |
| 462 vqshrun.s16 d2, q1, #0 | 462 vqmovun.s16 d2, q1 |
| 463 vqshrun.s16 d3, q0, #0 | 463 vqmovun.s16 d3, q0 |
| 464 vqshrun.s16 d22, q11, #0 | 464 vqmovun.s16 d22, q11 |
| 465 vqshrun.s16 d23, q8, #0 | 465 vqmovun.s16 d23, q8 |
| 466 vdup.16 q0, d21[0] ; proload next 2 rows data | 466 vdup.16 q0, d21[0] ; proload next 2 rows data |
| 467 vdup.16 q8, d21[1] | 467 vdup.16 q8, d21[1] |
| 468 vst1.64 {d2,d3}, [r0], r1 | 468 vst1.64 {d2,d3}, [r0], r1 |
| 469 vst1.64 {d22,d23}, [r0], r1 | 469 vst1.64 {d22,d23}, [r0], r1 |
| 470 | 470 |
| 471 vadd.s16 q1, q0, q2 | 471 vadd.s16 q1, q0, q2 |
| 472 vadd.s16 q0, q0, q3 | 472 vadd.s16 q0, q0, q3 |
| 473 vadd.s16 q11, q8, q2 | 473 vadd.s16 q11, q8, q2 |
| 474 vadd.s16 q8, q8, q3 | 474 vadd.s16 q8, q8, q3 |
| 475 vqshrun.s16 d2, q1, #0 | 475 vqmovun.s16 d2, q1 |
| 476 vqshrun.s16 d3, q0, #0 | 476 vqmovun.s16 d3, q0 |
| 477 vqshrun.s16 d22, q11, #0 | 477 vqmovun.s16 d22, q11 |
| 478 vqshrun.s16 d23, q8, #0 | 478 vqmovun.s16 d23, q8 |
| 479 vdup.16 q0, d21[2] ; proload next 2 rows data | 479 vdup.16 q0, d21[2] ; proload next 2 rows data |
| 480 vdup.16 q8, d21[3] | 480 vdup.16 q8, d21[3] |
| 481 vst1.64 {d2,d3}, [r0], r1 | 481 vst1.64 {d2,d3}, [r0], r1 |
| 482 vst1.64 {d22,d23}, [r0], r1 | 482 vst1.64 {d22,d23}, [r0], r1 |
| 483 | 483 |
| 484 | 484 |
| 485 vadd.s16 q1, q0, q2 | 485 vadd.s16 q1, q0, q2 |
| 486 vadd.s16 q0, q0, q3 | 486 vadd.s16 q0, q0, q3 |
| 487 vadd.s16 q11, q8, q2 | 487 vadd.s16 q11, q8, q2 |
| 488 vadd.s16 q8, q8, q3 | 488 vadd.s16 q8, q8, q3 |
| 489 vqshrun.s16 d2, q1, #0 | 489 vqmovun.s16 d2, q1 |
| 490 vqshrun.s16 d3, q0, #0 | 490 vqmovun.s16 d3, q0 |
| 491 vqshrun.s16 d22, q11, #0 | 491 vqmovun.s16 d22, q11 |
| 492 vqshrun.s16 d23, q8, #0 | 492 vqmovun.s16 d23, q8 |
| 493 vdup.16 q0, d20[2] | |
| 494 vdup.16 q8, d20[3] | |
| 495 vld1.8 {d18}, [r3]! ; preload 8 left into r12 | 493 vld1.8 {d18}, [r3]! ; preload 8 left into r12 |
| 496 vmovl.u8 q10, d18 | 494 vmovl.u8 q10, d18 |
| 497 vst1.64 {d2,d3}, [r0], r1 | 495 vst1.64 {d2,d3}, [r0], r1 |
| 498 vst1.64 {d22,d23}, [r0], r1 | 496 vst1.64 {d22,d23}, [r0], r1 |
| 499 | 497 |
| 500 subs r2, r2, #1 | 498 subs r2, r2, #1 |
| 501 bgt loop_16x16_neon | 499 bgt loop_16x16_neon |
| 502 | 500 |
| 503 bx lr | 501 bx lr |
| 504 ENDP ; |vp9_tm_predictor_16x16_neon| | 502 ENDP ; |vp9_tm_predictor_16x16_neon| |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 537 mov r2, #4 | 535 mov r2, #4 |
| 538 | 536 |
| 539 loop_32x32_neon | 537 loop_32x32_neon |
| 540 ; Process two rows. | 538 ; Process two rows. |
| 541 vdup.16 q0, d6[0] | 539 vdup.16 q0, d6[0] |
| 542 vdup.16 q2, d6[1] | 540 vdup.16 q2, d6[1] |
| 543 vadd.s16 q12, q0, q8 | 541 vadd.s16 q12, q0, q8 |
| 544 vadd.s16 q13, q0, q9 | 542 vadd.s16 q13, q0, q9 |
| 545 vadd.s16 q14, q0, q10 | 543 vadd.s16 q14, q0, q10 |
| 546 vadd.s16 q15, q0, q11 | 544 vadd.s16 q15, q0, q11 |
| 547 vqshrun.s16 d0, q12, #0 | 545 vqmovun.s16 d0, q12 |
| 548 vqshrun.s16 d1, q13, #0 | 546 vqmovun.s16 d1, q13 |
| 549 vadd.s16 q12, q2, q8 | 547 vadd.s16 q12, q2, q8 |
| 550 vadd.s16 q13, q2, q9 | 548 vadd.s16 q13, q2, q9 |
| 551 vqshrun.s16 d2, q14, #0 | 549 vqmovun.s16 d2, q14 |
| 552 vqshrun.s16 d3, q15, #0 | 550 vqmovun.s16 d3, q15 |
| 553 vadd.s16 q14, q2, q10 | 551 vadd.s16 q14, q2, q10 |
| 554 vadd.s16 q15, q2, q11 | 552 vadd.s16 q15, q2, q11 |
| 555 vst1.64 {d0-d3}, [r0], r1 | 553 vst1.64 {d0-d3}, [r0], r1 |
| 556 vqshrun.s16 d24, q12, #0 | 554 vqmovun.s16 d24, q12 |
| 557 vqshrun.s16 d25, q13, #0 | 555 vqmovun.s16 d25, q13 |
| 558 vqshrun.s16 d26, q14, #0 | 556 vqmovun.s16 d26, q14 |
| 559 vqshrun.s16 d27, q15, #0 | 557 vqmovun.s16 d27, q15 |
| 560 vdup.16 q1, d6[2] | 558 vdup.16 q1, d6[2] |
| 561 vdup.16 q2, d6[3] | 559 vdup.16 q2, d6[3] |
| 562 vst1.64 {d24-d27}, [r0], r1 | 560 vst1.64 {d24-d27}, [r0], r1 |
| 563 | 561 |
| 564 ; Process two rows. | 562 ; Process two rows. |
| 565 vadd.s16 q12, q1, q8 | 563 vadd.s16 q12, q1, q8 |
| 566 vadd.s16 q13, q1, q9 | 564 vadd.s16 q13, q1, q9 |
| 567 vadd.s16 q14, q1, q10 | 565 vadd.s16 q14, q1, q10 |
| 568 vadd.s16 q15, q1, q11 | 566 vadd.s16 q15, q1, q11 |
| 569 vqshrun.s16 d0, q12, #0 | 567 vqmovun.s16 d0, q12 |
| 570 vqshrun.s16 d1, q13, #0 | 568 vqmovun.s16 d1, q13 |
| 571 vadd.s16 q12, q2, q8 | 569 vadd.s16 q12, q2, q8 |
| 572 vadd.s16 q13, q2, q9 | 570 vadd.s16 q13, q2, q9 |
| 573 vqshrun.s16 d2, q14, #0 | 571 vqmovun.s16 d2, q14 |
| 574 vqshrun.s16 d3, q15, #0 | 572 vqmovun.s16 d3, q15 |
| 575 vadd.s16 q14, q2, q10 | 573 vadd.s16 q14, q2, q10 |
| 576 vadd.s16 q15, q2, q11 | 574 vadd.s16 q15, q2, q11 |
| 577 vst1.64 {d0-d3}, [r0], r1 | 575 vst1.64 {d0-d3}, [r0], r1 |
| 578 vqshrun.s16 d24, q12, #0 | 576 vqmovun.s16 d24, q12 |
| 579 vqshrun.s16 d25, q13, #0 | 577 vqmovun.s16 d25, q13 |
| 580 vqshrun.s16 d26, q14, #0 | 578 vqmovun.s16 d26, q14 |
| 581 vqshrun.s16 d27, q15, #0 | 579 vqmovun.s16 d27, q15 |
| 582 vdup.16 q0, d7[0] | 580 vdup.16 q0, d7[0] |
| 583 vdup.16 q2, d7[1] | 581 vdup.16 q2, d7[1] |
| 584 vst1.64 {d24-d27}, [r0], r1 | 582 vst1.64 {d24-d27}, [r0], r1 |
| 585 | 583 |
| 586 ; Process two rows. | 584 ; Process two rows. |
| 587 vadd.s16 q12, q0, q8 | 585 vadd.s16 q12, q0, q8 |
| 588 vadd.s16 q13, q0, q9 | 586 vadd.s16 q13, q0, q9 |
| 589 vadd.s16 q14, q0, q10 | 587 vadd.s16 q14, q0, q10 |
| 590 vadd.s16 q15, q0, q11 | 588 vadd.s16 q15, q0, q11 |
| 591 vqshrun.s16 d0, q12, #0 | 589 vqmovun.s16 d0, q12 |
| 592 vqshrun.s16 d1, q13, #0 | 590 vqmovun.s16 d1, q13 |
| 593 vadd.s16 q12, q2, q8 | 591 vadd.s16 q12, q2, q8 |
| 594 vadd.s16 q13, q2, q9 | 592 vadd.s16 q13, q2, q9 |
| 595 vqshrun.s16 d2, q14, #0 | 593 vqmovun.s16 d2, q14 |
| 596 vqshrun.s16 d3, q15, #0 | 594 vqmovun.s16 d3, q15 |
| 597 vadd.s16 q14, q2, q10 | 595 vadd.s16 q14, q2, q10 |
| 598 vadd.s16 q15, q2, q11 | 596 vadd.s16 q15, q2, q11 |
| 599 vst1.64 {d0-d3}, [r0], r1 | 597 vst1.64 {d0-d3}, [r0], r1 |
| 600 vqshrun.s16 d24, q12, #0 | 598 vqmovun.s16 d24, q12 |
| 601 vqshrun.s16 d25, q13, #0 | 599 vqmovun.s16 d25, q13 |
| 602 vqshrun.s16 d26, q14, #0 | 600 vqmovun.s16 d26, q14 |
| 603 vqshrun.s16 d27, q15, #0 | 601 vqmovun.s16 d27, q15 |
| 604 vdup.16 q0, d7[2] | 602 vdup.16 q0, d7[2] |
| 605 vdup.16 q2, d7[3] | 603 vdup.16 q2, d7[3] |
| 606 vst1.64 {d24-d27}, [r0], r1 | 604 vst1.64 {d24-d27}, [r0], r1 |
| 607 | 605 |
| 608 ; Process two rows. | 606 ; Process two rows. |
| 609 vadd.s16 q12, q0, q8 | 607 vadd.s16 q12, q0, q8 |
| 610 vadd.s16 q13, q0, q9 | 608 vadd.s16 q13, q0, q9 |
| 611 vadd.s16 q14, q0, q10 | 609 vadd.s16 q14, q0, q10 |
| 612 vadd.s16 q15, q0, q11 | 610 vadd.s16 q15, q0, q11 |
| 613 vqshrun.s16 d0, q12, #0 | 611 vqmovun.s16 d0, q12 |
| 614 vqshrun.s16 d1, q13, #0 | 612 vqmovun.s16 d1, q13 |
| 615 vadd.s16 q12, q2, q8 | 613 vadd.s16 q12, q2, q8 |
| 616 vadd.s16 q13, q2, q9 | 614 vadd.s16 q13, q2, q9 |
| 617 vqshrun.s16 d2, q14, #0 | 615 vqmovun.s16 d2, q14 |
| 618 vqshrun.s16 d3, q15, #0 | 616 vqmovun.s16 d3, q15 |
| 619 vadd.s16 q14, q2, q10 | 617 vadd.s16 q14, q2, q10 |
| 620 vadd.s16 q15, q2, q11 | 618 vadd.s16 q15, q2, q11 |
| 621 vst1.64 {d0-d3}, [r0], r1 | 619 vst1.64 {d0-d3}, [r0], r1 |
| 622 vqshrun.s16 d24, q12, #0 | 620 vqmovun.s16 d24, q12 |
| 623 vqshrun.s16 d25, q13, #0 | 621 vqmovun.s16 d25, q13 |
| 624 vld1.8 {d0}, [r3]! ; preload 8 left pixels | 622 vld1.8 {d0}, [r3]! ; preload 8 left pixels |
| 625 vqshrun.s16 d26, q14, #0 | 623 vqmovun.s16 d26, q14 |
| 626 vqshrun.s16 d27, q15, #0 | 624 vqmovun.s16 d27, q15 |
| 627 vmovl.u8 q3, d0 | 625 vmovl.u8 q3, d0 |
| 628 vst1.64 {d24-d27}, [r0], r1 | 626 vst1.64 {d24-d27}, [r0], r1 |
| 629 | 627 |
| 630 subs r2, r2, #1 | 628 subs r2, r2, #1 |
| 631 bgt loop_32x32_neon | 629 bgt loop_32x32_neon |
| 632 | 630 |
| 633 bx lr | 631 bx lr |
| 634 ENDP ; |vp9_tm_predictor_32x32_neon| | 632 ENDP ; |vp9_tm_predictor_32x32_neon| |
| 635 | 633 |
| 636 END | 634 END |
| OLD | NEW |