OLD | NEW |
1 /* | 1 /* |
2 * simd/jsimd.h | 2 * simd/jsimd.h |
3 * | 3 * |
4 * Copyright 2009 Pierre Ossman <ossman@cendio.se> for Cendio AB | 4 * Copyright 2009 Pierre Ossman <ossman@cendio.se> for Cendio AB |
5 * Copyright 2011 D. R. Commander | 5 * Copyright 2011 D. R. Commander |
6 * | 6 * |
7 * Based on the x86 SIMD extension for IJG JPEG library, | 7 * Based on the x86 SIMD extension for IJG JPEG library, |
8 * Copyright (C) 1999-2006, MIYASAKA Masaru. | 8 * Copyright (C) 1999-2006, MIYASAKA Masaru. |
9 * For conditions of distribution and use, see copyright notice in jsimdext.inc | 9 * For conditions of distribution and use, see copyright notice in jsimdext.inc |
10 * | 10 * |
(...skipping 310 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
321 JSAMPARRAY output_buf, int num_rows)); | 321 JSAMPARRAY output_buf, int num_rows)); |
322 EXTERN(void) jsimd_ycc_extxbgr_convert_sse2 | 322 EXTERN(void) jsimd_ycc_extxbgr_convert_sse2 |
323 JPP((JDIMENSION out_width, | 323 JPP((JDIMENSION out_width, |
324 JSAMPIMAGE input_buf, JDIMENSION input_row, | 324 JSAMPIMAGE input_buf, JDIMENSION input_row, |
325 JSAMPARRAY output_buf, int num_rows)); | 325 JSAMPARRAY output_buf, int num_rows)); |
326 EXTERN(void) jsimd_ycc_extxrgb_convert_sse2 | 326 EXTERN(void) jsimd_ycc_extxrgb_convert_sse2 |
327 JPP((JDIMENSION out_width, | 327 JPP((JDIMENSION out_width, |
328 JSAMPIMAGE input_buf, JDIMENSION input_row, | 328 JSAMPIMAGE input_buf, JDIMENSION input_row, |
329 JSAMPARRAY output_buf, int num_rows)); | 329 JSAMPARRAY output_buf, int num_rows)); |
330 | 330 |
| 331 EXTERN(void) jsimd_rgb_ycc_convert_neon |
| 332 JPP((JDIMENSION img_width, |
| 333 JSAMPARRAY input_buf, JSAMPIMAGE output_buf, |
| 334 JDIMENSION output_row, int num_rows)); |
| 335 EXTERN(void) jsimd_extrgb_ycc_convert_neon |
| 336 JPP((JDIMENSION img_width, |
| 337 JSAMPARRAY input_buf, JSAMPIMAGE output_buf, |
| 338 JDIMENSION output_row, int num_rows)); |
| 339 EXTERN(void) jsimd_extrgbx_ycc_convert_neon |
| 340 JPP((JDIMENSION img_width, |
| 341 JSAMPARRAY input_buf, JSAMPIMAGE output_buf, |
| 342 JDIMENSION output_row, int num_rows)); |
| 343 EXTERN(void) jsimd_extbgr_ycc_convert_neon |
| 344 JPP((JDIMENSION img_width, |
| 345 JSAMPARRAY input_buf, JSAMPIMAGE output_buf, |
| 346 JDIMENSION output_row, int num_rows)); |
| 347 EXTERN(void) jsimd_extbgrx_ycc_convert_neon |
| 348 JPP((JDIMENSION img_width, |
| 349 JSAMPARRAY input_buf, JSAMPIMAGE output_buf, |
| 350 JDIMENSION output_row, int num_rows)); |
| 351 EXTERN(void) jsimd_extxbgr_ycc_convert_neon |
| 352 JPP((JDIMENSION img_width, |
| 353 JSAMPARRAY input_buf, JSAMPIMAGE output_buf, |
| 354 JDIMENSION output_row, int num_rows)); |
| 355 EXTERN(void) jsimd_extxrgb_ycc_convert_neon |
| 356 JPP((JDIMENSION img_width, |
| 357 JSAMPARRAY input_buf, JSAMPIMAGE output_buf, |
| 358 JDIMENSION output_row, int num_rows)); |
| 359 |
331 EXTERN(void) jsimd_ycc_rgb_convert_neon | 360 EXTERN(void) jsimd_ycc_rgb_convert_neon |
332 JPP((JDIMENSION out_width, | 361 JPP((JDIMENSION out_width, |
333 JSAMPIMAGE input_buf, JDIMENSION input_row, | 362 JSAMPIMAGE input_buf, JDIMENSION input_row, |
334 JSAMPARRAY output_buf, int num_rows)); | 363 JSAMPARRAY output_buf, int num_rows)); |
335 EXTERN(void) jsimd_ycc_extrgb_convert_neon | 364 EXTERN(void) jsimd_ycc_extrgb_convert_neon |
336 JPP((JDIMENSION out_width, | 365 JPP((JDIMENSION out_width, |
337 JSAMPIMAGE input_buf, JDIMENSION input_row, | 366 JSAMPIMAGE input_buf, JDIMENSION input_row, |
338 JSAMPARRAY output_buf, int num_rows)); | 367 JSAMPARRAY output_buf, int num_rows)); |
339 EXTERN(void) jsimd_ycc_extrgbx_convert_neon | 368 EXTERN(void) jsimd_ycc_extrgbx_convert_neon |
340 JPP((JDIMENSION out_width, | 369 JPP((JDIMENSION out_width, |
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
495 | 524 |
496 /* SIMD Sample Conversion */ | 525 /* SIMD Sample Conversion */ |
497 EXTERN(void) jsimd_convsamp_mmx JPP((JSAMPARRAY sample_data, | 526 EXTERN(void) jsimd_convsamp_mmx JPP((JSAMPARRAY sample_data, |
498 JDIMENSION start_col, | 527 JDIMENSION start_col, |
499 DCTELEM * workspace)); | 528 DCTELEM * workspace)); |
500 | 529 |
501 EXTERN(void) jsimd_convsamp_sse2 JPP((JSAMPARRAY sample_data, | 530 EXTERN(void) jsimd_convsamp_sse2 JPP((JSAMPARRAY sample_data, |
502 JDIMENSION start_col, | 531 JDIMENSION start_col, |
503 DCTELEM * workspace)); | 532 DCTELEM * workspace)); |
504 | 533 |
| 534 EXTERN(void) jsimd_convsamp_neon JPP((JSAMPARRAY sample_data, |
| 535 JDIMENSION start_col, |
| 536 DCTELEM * workspace)); |
| 537 |
505 EXTERN(void) jsimd_convsamp_float_3dnow JPP((JSAMPARRAY sample_data, | 538 EXTERN(void) jsimd_convsamp_float_3dnow JPP((JSAMPARRAY sample_data, |
506 JDIMENSION start_col, | 539 JDIMENSION start_col, |
507 FAST_FLOAT * workspace)); | 540 FAST_FLOAT * workspace)); |
508 | 541 |
509 EXTERN(void) jsimd_convsamp_float_sse JPP((JSAMPARRAY sample_data, | 542 EXTERN(void) jsimd_convsamp_float_sse JPP((JSAMPARRAY sample_data, |
510 JDIMENSION start_col, | 543 JDIMENSION start_col, |
511 FAST_FLOAT * workspace)); | 544 FAST_FLOAT * workspace)); |
512 | 545 |
513 EXTERN(void) jsimd_convsamp_float_sse2 JPP((JSAMPARRAY sample_data, | 546 EXTERN(void) jsimd_convsamp_float_sse2 JPP((JSAMPARRAY sample_data, |
514 JDIMENSION start_col, | 547 JDIMENSION start_col, |
515 FAST_FLOAT * workspace)); | 548 FAST_FLOAT * workspace)); |
516 | 549 |
517 /* SIMD Forward DCT */ | 550 /* SIMD Forward DCT */ |
518 EXTERN(void) jsimd_fdct_islow_mmx JPP((DCTELEM * data)); | 551 EXTERN(void) jsimd_fdct_islow_mmx JPP((DCTELEM * data)); |
519 EXTERN(void) jsimd_fdct_ifast_mmx JPP((DCTELEM * data)); | 552 EXTERN(void) jsimd_fdct_ifast_mmx JPP((DCTELEM * data)); |
520 | 553 |
521 extern const int jconst_fdct_ifast_sse2[]; | 554 extern const int jconst_fdct_ifast_sse2[]; |
522 EXTERN(void) jsimd_fdct_islow_sse2 JPP((DCTELEM * data)); | 555 EXTERN(void) jsimd_fdct_islow_sse2 JPP((DCTELEM * data)); |
523 extern const int jconst_fdct_islow_sse2[]; | 556 extern const int jconst_fdct_islow_sse2[]; |
524 EXTERN(void) jsimd_fdct_ifast_sse2 JPP((DCTELEM * data)); | 557 EXTERN(void) jsimd_fdct_ifast_sse2 JPP((DCTELEM * data)); |
525 | 558 |
| 559 EXTERN(void) jsimd_fdct_ifast_neon JPP((DCTELEM * data)); |
| 560 |
526 EXTERN(void) jsimd_fdct_float_3dnow JPP((FAST_FLOAT * data)); | 561 EXTERN(void) jsimd_fdct_float_3dnow JPP((FAST_FLOAT * data)); |
527 | 562 |
528 extern const int jconst_fdct_float_sse[]; | 563 extern const int jconst_fdct_float_sse[]; |
529 EXTERN(void) jsimd_fdct_float_sse JPP((FAST_FLOAT * data)); | 564 EXTERN(void) jsimd_fdct_float_sse JPP((FAST_FLOAT * data)); |
530 | 565 |
531 /* SIMD Quantization */ | 566 /* SIMD Quantization */ |
532 EXTERN(void) jsimd_quantize_mmx JPP((JCOEFPTR coef_block, | 567 EXTERN(void) jsimd_quantize_mmx JPP((JCOEFPTR coef_block, |
533 DCTELEM * divisors, | 568 DCTELEM * divisors, |
534 DCTELEM * workspace)); | 569 DCTELEM * workspace)); |
535 | 570 |
536 EXTERN(void) jsimd_quantize_sse2 JPP((JCOEFPTR coef_block, | 571 EXTERN(void) jsimd_quantize_sse2 JPP((JCOEFPTR coef_block, |
537 DCTELEM * divisors, | 572 DCTELEM * divisors, |
538 DCTELEM * workspace)); | 573 DCTELEM * workspace)); |
539 | 574 |
| 575 EXTERN(void) jsimd_quantize_neon JPP((JCOEFPTR coef_block, |
| 576 DCTELEM * divisors, |
| 577 DCTELEM * workspace)); |
| 578 |
540 EXTERN(void) jsimd_quantize_float_3dnow JPP((JCOEFPTR coef_block, | 579 EXTERN(void) jsimd_quantize_float_3dnow JPP((JCOEFPTR coef_block, |
541 FAST_FLOAT * divisors, | 580 FAST_FLOAT * divisors, |
542 FAST_FLOAT * workspace)); | 581 FAST_FLOAT * workspace)); |
543 | 582 |
544 EXTERN(void) jsimd_quantize_float_sse JPP((JCOEFPTR coef_block, | 583 EXTERN(void) jsimd_quantize_float_sse JPP((JCOEFPTR coef_block, |
545 FAST_FLOAT * divisors, | 584 FAST_FLOAT * divisors, |
546 FAST_FLOAT * workspace)); | 585 FAST_FLOAT * workspace)); |
547 | 586 |
548 EXTERN(void) jsimd_quantize_float_sse2 JPP((JCOEFPTR coef_block, | 587 EXTERN(void) jsimd_quantize_float_sse2 JPP((JCOEFPTR coef_block, |
549 FAST_FLOAT * divisors, | 588 FAST_FLOAT * divisors, |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
592 EXTERN(void) jsimd_idct_islow_sse2 JPP((void * dct_table, | 631 EXTERN(void) jsimd_idct_islow_sse2 JPP((void * dct_table, |
593 JCOEFPTR coef_block, | 632 JCOEFPTR coef_block, |
594 JSAMPARRAY output_buf, | 633 JSAMPARRAY output_buf, |
595 JDIMENSION output_col)); | 634 JDIMENSION output_col)); |
596 extern const int jconst_idct_ifast_sse2[]; | 635 extern const int jconst_idct_ifast_sse2[]; |
597 EXTERN(void) jsimd_idct_ifast_sse2 JPP((void * dct_table, | 636 EXTERN(void) jsimd_idct_ifast_sse2 JPP((void * dct_table, |
598 JCOEFPTR coef_block, | 637 JCOEFPTR coef_block, |
599 JSAMPARRAY output_buf, | 638 JSAMPARRAY output_buf, |
600 JDIMENSION output_col)); | 639 JDIMENSION output_col)); |
601 | 640 |
| 641 EXTERN(void) jsimd_idct_islow_neon JPP((void * dct_table, |
| 642 JCOEFPTR coef_block, |
| 643 JSAMPARRAY output_buf, |
| 644 JDIMENSION output_col)); |
602 EXTERN(void) jsimd_idct_ifast_neon JPP((void * dct_table, | 645 EXTERN(void) jsimd_idct_ifast_neon JPP((void * dct_table, |
603 JCOEFPTR coef_block, | 646 JCOEFPTR coef_block, |
604 JSAMPARRAY output_buf, | 647 JSAMPARRAY output_buf, |
605 JDIMENSION output_col)); | 648 JDIMENSION output_col)); |
606 | 649 |
607 EXTERN(void) jsimd_idct_float_3dnow JPP((void * dct_table, | 650 EXTERN(void) jsimd_idct_float_3dnow JPP((void * dct_table, |
608 JCOEFPTR coef_block, | 651 JCOEFPTR coef_block, |
609 JSAMPARRAY output_buf, | 652 JSAMPARRAY output_buf, |
610 JDIMENSION output_col)); | 653 JDIMENSION output_col)); |
611 | 654 |
612 extern const int jconst_idct_float_sse[]; | 655 extern const int jconst_idct_float_sse[]; |
613 EXTERN(void) jsimd_idct_float_sse JPP((void * dct_table, | 656 EXTERN(void) jsimd_idct_float_sse JPP((void * dct_table, |
614 JCOEFPTR coef_block, | 657 JCOEFPTR coef_block, |
615 JSAMPARRAY output_buf, | 658 JSAMPARRAY output_buf, |
616 JDIMENSION output_col)); | 659 JDIMENSION output_col)); |
617 | 660 |
618 extern const int jconst_idct_float_sse2[]; | 661 extern const int jconst_idct_float_sse2[]; |
619 EXTERN(void) jsimd_idct_float_sse2 JPP((void * dct_table, | 662 EXTERN(void) jsimd_idct_float_sse2 JPP((void * dct_table, |
620 JCOEFPTR coef_block, | 663 JCOEFPTR coef_block, |
621 JSAMPARRAY output_buf, | 664 JSAMPARRAY output_buf, |
622 JDIMENSION output_col)); | 665 JDIMENSION output_col)); |
623 | 666 |
OLD | NEW |