~ubuntu-branches/ubuntu/intrepid/gstreamer0.10-ffmpeg/intrepid

« back to all changes in this revision

Viewing changes to gst-libs/ext/ffmpeg/libavcodec/liba52/resample_mmx.c

  • Committer: Bazaar Package Importer
  • Author(s): Sebastian Dröge
  • Date: 2006-04-01 16:13:43 UTC
  • mto: (1.2.2 lenny)
  • mto: This revision was merged to the branch mainline in revision 5.
  • Revision ID: james.westby@ubuntu.com-20060401161343-n621cgjlujio0otg
Tags: upstream-0.10.1
Import upstream version 0.10.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
 
2
2
// MMX optimizations from Michael Niedermayer (michaelni@gmx.at) (under GPL)
3
3
 
4
 
/* optimization TODO / NOTES 
5
 
    movntq is slightly faster (0.5% with the current test.c benchmark) 
 
4
/* optimization TODO / NOTES
 
5
    movntq is slightly faster (0.5% with the current test.c benchmark)
6
6
        (but thats just test.c so that needs to be testd in reallity)
7
 
        and it would mean (C / MMX2 / MMX / 3DNOW) versions 
 
7
        and it would mean (C / MMX2 / MMX / 3DNOW) versions
8
8
*/
9
9
 
10
10
static uint64_t __attribute__((aligned(8))) attribute_used magicF2W= 0x43c0000043c00000LL;
128
128
                "movq %%mm0, (%0, %%edi)        \n\t"
129
129
                "movq %%mm1, 8(%0, %%edi)       \n\t"
130
130
                "movq %%mm3, 16(%0, %%edi)      \n\t"
131
 
                
 
131
 
132
132
                "movd 1032(%1, %%esi), %%mm1    \n\t"
133
133
                "punpckldq 12(%1, %%esi), %%mm1\n\t"
134
134
                "movd 2060(%1, %%esi), %%mm2    \n\t"
142
142
                "packssdw %%mm3, %%mm2          \n\t"
143
143
                "movq %%mm0, 24(%0, %%edi)      \n\t"
144
144
                "movq %%mm2, 32(%0, %%edi)      \n\t"
145
 
                                
 
145
 
146
146
                "addl $16, %%esi                \n\t"
147
147
                " jnz 1b                        \n\t"
148
148
                "emms                           \n\t"
235
235
                "movq %%mm0, (%0, %%edi)        \n\t"
236
236
                "movq %%mm2, 8(%0, %%edi)       \n\t"
237
237
                "movq %%mm4, 16(%0, %%edi)      \n\t"
238
 
                
 
238
 
239
239
                "movd 3080(%1, %%esi), %%mm0    \n\t"
240
240
                "punpckldq 4104(%1, %%esi), %%mm0\n\t"
241
241
                "movd 1032(%1, %%esi), %%mm1    \n\t"
252
252
                "packssdw %%mm3, %%mm2          \n\t"
253
253
                "movq %%mm0, 24(%0, %%edi)      \n\t"
254
254
                "movq %%mm2, 32(%0, %%edi)      \n\t"
255
 
                                
 
255
 
256
256
                "addl $16, %%esi                \n\t"
257
257
                " jnz 1b                        \n\t"
258
258
                "emms                           \n\t"
311
311
                "1:                             \n\t"
312
312
                "movq 1024(%1, %%esi), %%mm0    \n\t"
313
313
                "movq 2048(%1, %%esi), %%mm1    \n\t"
314
 
                "movq (%1, %%esi), %%mm5        \n\t" 
 
314
                "movq (%1, %%esi), %%mm5        \n\t"
315
315
                "psubd %%mm7, %%mm0             \n\t"
316
316
                "psubd %%mm7, %%mm1             \n\t"
317
317
                "psubd %%mm7, %%mm5             \n\t"
318
318
                "leal (%%esi, %%esi, 2), %%edi  \n\t"
319
 
                
 
319
 
320
320
                "pxor %%mm4, %%mm4              \n\t"
321
321
                "packssdw %%mm5, %%mm0          \n\t" // FfAa
322
322
                "packssdw %%mm4, %%mm1          \n\t" // 00Bb
326
326
                "punpckldq %%mm4, %%mm3         \n\t" // f0XX
327
327
                "punpckldq %%mm6, %%mm0         \n\t" // 00ba
328
328
                "punpckhdq %%mm1, %%mm3         \n\t" // BAf0
329
 
                
 
329
 
330
330
                "movq %%mm0, (%0, %%edi)        \n\t" // 00ba
331
331
                "punpckhdq %%mm4, %%mm0         \n\t" // F000
332
332
                "movq %%mm3, 8(%0, %%edi)       \n\t" // BAf0
350
350
                "movq 1024(%1, %%esi), %%mm0    \n\t"
351
351
                "movq 3072(%1, %%esi), %%mm1    \n\t"
352
352
                "movq 2048(%1, %%esi), %%mm4    \n\t"
353
 
                "movq (%1, %%esi), %%mm5        \n\t" 
 
353
                "movq (%1, %%esi), %%mm5        \n\t"
354
354
                "psubd %%mm7, %%mm0             \n\t"
355
355
                "psubd %%mm7, %%mm1             \n\t"
356
356
                "psubd %%mm7, %%mm4             \n\t"
357
357
                "psubd %%mm7, %%mm5             \n\t"
358
358
                "leal (%%esi, %%esi, 2), %%edi  \n\t"
359
 
                
 
359
 
360
360
                "packssdw %%mm4, %%mm0          \n\t" // EeAa
361
361
                "packssdw %%mm5, %%mm1          \n\t" // FfBb
362
362
                "movq %%mm0, %%mm2              \n\t" // EeAa
365
365
                "movq %%mm0, %%mm1              \n\t" // BAba
366
366
                "punpckldq %%mm6, %%mm0         \n\t" // 00ba
367
367
                "punpckhdq %%mm1, %%mm1         \n\t" // BABA
368
 
                
 
368
 
369
369
                "movq %%mm0, (%0, %%edi)        \n\t"
370
370
                "punpckhdq %%mm2, %%mm0         \n\t" // FE00
371
371
                "punpckldq %%mm1, %%mm2         \n\t" // BAfe
391
391
                "movq 2048(%1, %%esi), %%mm1    \n\t"
392
392
                "movq 3072(%1, %%esi), %%mm2    \n\t"
393
393
                "movq 4096(%1, %%esi), %%mm3    \n\t"
394
 
                "movq (%1, %%esi), %%mm5        \n\t" 
 
394
                "movq (%1, %%esi), %%mm5        \n\t"
395
395
                "psubd %%mm7, %%mm0             \n\t"
396
396
                "psubd %%mm7, %%mm1             \n\t"
397
397
                "psubd %%mm7, %%mm2             \n\t"
398
398
                "psubd %%mm7, %%mm3             \n\t"
399
399
                "psubd %%mm7, %%mm5             \n\t"
400
400
                "leal (%%esi, %%esi, 2), %%edi  \n\t"
401
 
                
 
401
 
402
402
                "packssdw %%mm2, %%mm0          \n\t" // CcAa
403
403
                "packssdw %%mm3, %%mm1          \n\t" // DdBb
404
404
                "packssdw %%mm5, %%mm5          \n\t" // FfFf
413
413
                "punpckhdq %%mm1, %%mm1         \n\t" // BABA
414
414
                "punpckldq %%mm1, %%mm4         \n\t" // BAf0
415
415
                "punpckhdq %%mm3, %%mm2         \n\t" // F0DC
416
 
                
 
416
 
417
417
                "movq %%mm0, (%0, %%edi)        \n\t"
418
418
                "movq %%mm4, 8(%0, %%edi)       \n\t"
419
419
                "movq %%mm2, 16(%0, %%edi)      \n\t"
438
438
                "movq 4096(%1, %%esi), %%mm2    \n\t"
439
439
                "movq 5120(%1, %%esi), %%mm3    \n\t"
440
440
                "movq 2048(%1, %%esi), %%mm4    \n\t"
441
 
                "movq (%1, %%esi), %%mm5        \n\t" 
 
441
                "movq (%1, %%esi), %%mm5        \n\t"
442
442
                "psubd %%mm7, %%mm0             \n\t"
443
443
                "psubd %%mm7, %%mm1             \n\t"
444
444
                "psubd %%mm7, %%mm2             \n\t"
446
446
                "psubd %%mm7, %%mm4             \n\t"
447
447
                "psubd %%mm7, %%mm5             \n\t"
448
448
                "leal (%%esi, %%esi, 2), %%edi  \n\t"
449
 
                
 
449
 
450
450
                "packssdw %%mm2, %%mm0          \n\t" // CcAa
451
451
                "packssdw %%mm3, %%mm1          \n\t" // DdBb
452
452
                "packssdw %%mm4, %%mm4          \n\t" // EeEe
461
461
                "punpckhdq %%mm1, %%mm1         \n\t" // BABA
462
462
                "punpckldq %%mm1, %%mm4         \n\t" // BAfe
463
463
                "punpckhdq %%mm3, %%mm2         \n\t" // FEDC
464
 
                
 
464
 
465
465
                "movq %%mm0, (%0, %%edi)        \n\t"
466
466
                "movq %%mm4, 8(%0, %%edi)       \n\t"
467
467
                "movq %%mm2, 16(%0, %%edi)      \n\t"