Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(598)

Side by Side Diff: source/libvpx/vp9/common/arm/neon/vp9_reconintra_neon.asm

Issue 181493009: libvpx: Pull from upstream (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/deps/third_party/libvpx/
Patch Set: Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
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
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
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
OLDNEW
« no previous file with comments | « source/libvpx/vp9/common/arm/neon/vp9_iht8x8_add_neon.asm ('k') | source/libvpx/vp9/common/generic/vp9_systemdependent.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698