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

Side by Side Diff: simd/jsimd_arm.c

Issue 8720003: Update libjpeg-turbo to r722. (Closed) Base URL: svn://chrome-svn/chrome/trunk/deps/third_party/libjpeg_turbo/
Patch Set: '' Created 9 years 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
« no previous file with comments | « simd/jsimd.h ('k') | simd/jsimd_arm_neon.S » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * jsimd_arm.c 2 * jsimd_arm.c
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 2009-2011 D. R. Commander 5 * Copyright 2009-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 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
129 env = getenv("JSIMD_FORCE_NO_SIMD"); 129 env = getenv("JSIMD_FORCE_NO_SIMD");
130 if ((env != NULL) && (strcmp(env, "1") == 0)) 130 if ((env != NULL) && (strcmp(env, "1") == 0))
131 simd_support = 0; 131 simd_support = 0;
132 } 132 }
133 133
134 GLOBAL(int) 134 GLOBAL(int)
135 jsimd_can_rgb_ycc (void) 135 jsimd_can_rgb_ycc (void)
136 { 136 {
137 init_simd(); 137 init_simd();
138 138
139 /* The code is optimised for these values only */
140 if (BITS_IN_JSAMPLE != 8)
141 return 0;
142 if (sizeof(JDIMENSION) != 4)
143 return 0;
144 if ((RGB_PIXELSIZE != 3) && (RGB_PIXELSIZE != 4))
145 return 0;
146
147 if (simd_support & JSIMD_ARM_NEON)
148 return 1;
149
139 return 0; 150 return 0;
140 } 151 }
141 152
142 GLOBAL(int) 153 GLOBAL(int)
143 jsimd_can_rgb_gray (void) 154 jsimd_can_rgb_gray (void)
144 { 155 {
145 init_simd(); 156 init_simd();
146 157
147 return 0; 158 return 0;
148 } 159 }
(...skipping 14 matching lines...) Expand all
163 return 1; 174 return 1;
164 175
165 return 0; 176 return 0;
166 } 177 }
167 178
168 GLOBAL(void) 179 GLOBAL(void)
169 jsimd_rgb_ycc_convert (j_compress_ptr cinfo, 180 jsimd_rgb_ycc_convert (j_compress_ptr cinfo,
170 JSAMPARRAY input_buf, JSAMPIMAGE output_buf, 181 JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
171 JDIMENSION output_row, int num_rows) 182 JDIMENSION output_row, int num_rows)
172 { 183 {
184 void (*neonfct)(JDIMENSION, JSAMPARRAY, JSAMPIMAGE, JDIMENSION, int);
185
186 switch(cinfo->in_color_space)
187 {
188 case JCS_EXT_RGB:
189 neonfct=jsimd_extrgb_ycc_convert_neon;
190 break;
191 case JCS_EXT_RGBX:
192 neonfct=jsimd_extrgbx_ycc_convert_neon;
193 break;
194 case JCS_EXT_BGR:
195 neonfct=jsimd_extbgr_ycc_convert_neon;
196 break;
197 case JCS_EXT_BGRX:
198 neonfct=jsimd_extbgrx_ycc_convert_neon;
199 break;
200 case JCS_EXT_XBGR:
201 neonfct=jsimd_extxbgr_ycc_convert_neon;
202 break;
203 case JCS_EXT_XRGB:
204 neonfct=jsimd_extxrgb_ycc_convert_neon;
205 break;
206 default:
207 neonfct=jsimd_extrgb_ycc_convert_neon;
208 break;
209 }
210
211 if (simd_support & JSIMD_ARM_NEON)
212 neonfct(cinfo->image_width, input_buf,
213 output_buf, output_row, num_rows);
173 } 214 }
174 215
175 GLOBAL(void) 216 GLOBAL(void)
176 jsimd_rgb_gray_convert (j_compress_ptr cinfo, 217 jsimd_rgb_gray_convert (j_compress_ptr cinfo,
177 JSAMPARRAY input_buf, JSAMPIMAGE output_buf, 218 JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
178 JDIMENSION output_row, int num_rows) 219 JDIMENSION output_row, int num_rows)
179 { 220 {
180 } 221 }
181 222
182 GLOBAL(void) 223 GLOBAL(void)
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
338 JDIMENSION in_row_group_ctr, 379 JDIMENSION in_row_group_ctr,
339 JSAMPARRAY output_buf) 380 JSAMPARRAY output_buf)
340 { 381 {
341 } 382 }
342 383
343 GLOBAL(int) 384 GLOBAL(int)
344 jsimd_can_convsamp (void) 385 jsimd_can_convsamp (void)
345 { 386 {
346 init_simd(); 387 init_simd();
347 388
389 /* The code is optimised for these values only */
390 if (DCTSIZE != 8)
391 return 0;
392 if (BITS_IN_JSAMPLE != 8)
393 return 0;
394 if (sizeof(JDIMENSION) != 4)
395 return 0;
396 if (sizeof(DCTELEM) != 2)
397 return 0;
398
399 if (simd_support & JSIMD_ARM_NEON)
400 return 1;
401
348 return 0; 402 return 0;
349 } 403 }
350 404
351 GLOBAL(int) 405 GLOBAL(int)
352 jsimd_can_convsamp_float (void) 406 jsimd_can_convsamp_float (void)
353 { 407 {
354 init_simd(); 408 init_simd();
355 409
356 return 0; 410 return 0;
357 } 411 }
358 412
359 GLOBAL(void) 413 GLOBAL(void)
360 jsimd_convsamp (JSAMPARRAY sample_data, JDIMENSION start_col, 414 jsimd_convsamp (JSAMPARRAY sample_data, JDIMENSION start_col,
361 DCTELEM * workspace) 415 DCTELEM * workspace)
362 { 416 {
417 if (simd_support & JSIMD_ARM_NEON)
418 jsimd_convsamp_neon(sample_data, start_col, workspace);
363 } 419 }
364 420
365 GLOBAL(void) 421 GLOBAL(void)
366 jsimd_convsamp_float (JSAMPARRAY sample_data, JDIMENSION start_col, 422 jsimd_convsamp_float (JSAMPARRAY sample_data, JDIMENSION start_col,
367 FAST_FLOAT * workspace) 423 FAST_FLOAT * workspace)
368 { 424 {
369 } 425 }
370 426
371 GLOBAL(int) 427 GLOBAL(int)
372 jsimd_can_fdct_islow (void) 428 jsimd_can_fdct_islow (void)
373 { 429 {
374 init_simd(); 430 init_simd();
375 431
376 return 0; 432 return 0;
377 } 433 }
378 434
379 GLOBAL(int) 435 GLOBAL(int)
380 jsimd_can_fdct_ifast (void) 436 jsimd_can_fdct_ifast (void)
381 { 437 {
382 init_simd(); 438 init_simd();
383 439
440 /* The code is optimised for these values only */
441 if (DCTSIZE != 8)
442 return 0;
443 if (sizeof(DCTELEM) != 2)
444 return 0;
445
446 if (simd_support & JSIMD_ARM_NEON)
447 return 1;
448
384 return 0; 449 return 0;
385 } 450 }
386 451
387 GLOBAL(int) 452 GLOBAL(int)
388 jsimd_can_fdct_float (void) 453 jsimd_can_fdct_float (void)
389 { 454 {
390 init_simd(); 455 init_simd();
391 456
392 return 0; 457 return 0;
393 } 458 }
394 459
395 GLOBAL(void) 460 GLOBAL(void)
396 jsimd_fdct_islow (DCTELEM * data) 461 jsimd_fdct_islow (DCTELEM * data)
397 { 462 {
398 } 463 }
399 464
400 GLOBAL(void) 465 GLOBAL(void)
401 jsimd_fdct_ifast (DCTELEM * data) 466 jsimd_fdct_ifast (DCTELEM * data)
402 { 467 {
468 if (simd_support & JSIMD_ARM_NEON)
469 jsimd_fdct_ifast_neon(data);
403 } 470 }
404 471
405 GLOBAL(void) 472 GLOBAL(void)
406 jsimd_fdct_float (FAST_FLOAT * data) 473 jsimd_fdct_float (FAST_FLOAT * data)
407 { 474 {
408 } 475 }
409 476
410 GLOBAL(int) 477 GLOBAL(int)
411 jsimd_can_quantize (void) 478 jsimd_can_quantize (void)
412 { 479 {
413 init_simd(); 480 init_simd();
414 481
482 /* The code is optimised for these values only */
483 if (DCTSIZE != 8)
484 return 0;
485 if (sizeof(JCOEF) != 2)
486 return 0;
487 if (sizeof(DCTELEM) != 2)
488 return 0;
489
490 if (simd_support & JSIMD_ARM_NEON)
491 return 1;
492
415 return 0; 493 return 0;
416 } 494 }
417 495
418 GLOBAL(int) 496 GLOBAL(int)
419 jsimd_can_quantize_float (void) 497 jsimd_can_quantize_float (void)
420 { 498 {
421 init_simd(); 499 init_simd();
422 500
423 return 0; 501 return 0;
424 } 502 }
425 503
426 GLOBAL(void) 504 GLOBAL(void)
427 jsimd_quantize (JCOEFPTR coef_block, DCTELEM * divisors, 505 jsimd_quantize (JCOEFPTR coef_block, DCTELEM * divisors,
428 DCTELEM * workspace) 506 DCTELEM * workspace)
429 { 507 {
508 if (simd_support & JSIMD_ARM_NEON)
509 jsimd_quantize_neon(coef_block, divisors, workspace);
430 } 510 }
431 511
432 GLOBAL(void) 512 GLOBAL(void)
433 jsimd_quantize_float (JCOEFPTR coef_block, FAST_FLOAT * divisors, 513 jsimd_quantize_float (JCOEFPTR coef_block, FAST_FLOAT * divisors,
434 FAST_FLOAT * workspace) 514 FAST_FLOAT * workspace)
435 { 515 {
436 } 516 }
437 517
438 GLOBAL(int) 518 GLOBAL(int)
439 jsimd_can_idct_2x2 (void) 519 jsimd_can_idct_2x2 (void)
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
497 { 577 {
498 if ((simd_support & JSIMD_ARM_NEON)) 578 if ((simd_support & JSIMD_ARM_NEON))
499 jsimd_idct_4x4_neon(compptr->dct_table, coef_block, output_buf, output_col); 579 jsimd_idct_4x4_neon(compptr->dct_table, coef_block, output_buf, output_col);
500 } 580 }
501 581
502 GLOBAL(int) 582 GLOBAL(int)
503 jsimd_can_idct_islow (void) 583 jsimd_can_idct_islow (void)
504 { 584 {
505 init_simd(); 585 init_simd();
506 586
587 /* The code is optimised for these values only */
588 if (DCTSIZE != 8)
589 return 0;
590 if (sizeof(JCOEF) != 2)
591 return 0;
592 if (BITS_IN_JSAMPLE != 8)
593 return 0;
594 if (sizeof(JDIMENSION) != 4)
595 return 0;
596 if (sizeof(ISLOW_MULT_TYPE) != 2)
597 return 0;
598
599 if (simd_support & JSIMD_ARM_NEON)
600 return 1;
601
507 return 0; 602 return 0;
508 } 603 }
509 604
510 GLOBAL(int) 605 GLOBAL(int)
511 jsimd_can_idct_ifast (void) 606 jsimd_can_idct_ifast (void)
512 { 607 {
513 init_simd(); 608 init_simd();
514 609
515 /* The code is optimised for these values only */ 610 /* The code is optimised for these values only */
516 if (DCTSIZE != 8) 611 if (DCTSIZE != 8)
(...skipping 21 matching lines...) Expand all
538 init_simd(); 633 init_simd();
539 634
540 return 0; 635 return 0;
541 } 636 }
542 637
543 GLOBAL(void) 638 GLOBAL(void)
544 jsimd_idct_islow (j_decompress_ptr cinfo, jpeg_component_info * compptr, 639 jsimd_idct_islow (j_decompress_ptr cinfo, jpeg_component_info * compptr,
545 JCOEFPTR coef_block, JSAMPARRAY output_buf, 640 JCOEFPTR coef_block, JSAMPARRAY output_buf,
546 JDIMENSION output_col) 641 JDIMENSION output_col)
547 { 642 {
643 if ((simd_support & JSIMD_ARM_NEON))
644 jsimd_idct_islow_neon(compptr->dct_table, coef_block, output_buf, output_col );
548 } 645 }
549 646
550 GLOBAL(void) 647 GLOBAL(void)
551 jsimd_idct_ifast (j_decompress_ptr cinfo, jpeg_component_info * compptr, 648 jsimd_idct_ifast (j_decompress_ptr cinfo, jpeg_component_info * compptr,
552 JCOEFPTR coef_block, JSAMPARRAY output_buf, 649 JCOEFPTR coef_block, JSAMPARRAY output_buf,
553 JDIMENSION output_col) 650 JDIMENSION output_col)
554 { 651 {
555 if ((simd_support & JSIMD_ARM_NEON)) 652 if ((simd_support & JSIMD_ARM_NEON))
556 jsimd_idct_ifast_neon(compptr->dct_table, coef_block, output_buf, output_col ); 653 jsimd_idct_ifast_neon(compptr->dct_table, coef_block, output_buf, output_col );
557 } 654 }
558 655
559 GLOBAL(void) 656 GLOBAL(void)
560 jsimd_idct_float (j_decompress_ptr cinfo, jpeg_component_info * compptr, 657 jsimd_idct_float (j_decompress_ptr cinfo, jpeg_component_info * compptr,
561 JCOEFPTR coef_block, JSAMPARRAY output_buf, 658 JCOEFPTR coef_block, JSAMPARRAY output_buf,
562 JDIMENSION output_col) 659 JDIMENSION output_col)
563 { 660 {
564 } 661 }
565 662
OLDNEW
« no previous file with comments | « simd/jsimd.h ('k') | simd/jsimd_arm_neon.S » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698