Mercurial > mplayer.hg
comparison postproc/rgb2rgb_template.c @ 2512:8899131fae4d
More accurate prefetching
author | nick |
---|---|
date | Sun, 28 Oct 2001 13:06:49 +0000 |
parents | 6db23dd30242 |
children | d3c6b9ae24b1 |
comparison
equal
deleted
inserted
replaced
2511:6db23dd30242 | 2512:8899131fae4d |
---|---|
35 end = s + src_size; | 35 end = s + src_size; |
36 #ifdef HAVE_MMX | 36 #ifdef HAVE_MMX |
37 #ifdef PREFETCH | 37 #ifdef PREFETCH |
38 __asm __volatile( | 38 __asm __volatile( |
39 PREFETCH" %0\n\t" | 39 PREFETCH" %0\n\t" |
40 PREFETCH" 64%0\n\t" | 40 ::"m"(*s):"memory"); |
41 PREFETCHW" %1\n\t" | |
42 PREFETCHW" 64%1\n\t"::"m"(*s),"m"(*dest):"memory"); | |
43 #endif | 41 #endif |
44 mm_end = (uint8_t*)((((unsigned long)end)/16)*16); | 42 mm_end = (uint8_t*)((((unsigned long)end)/16)*16); |
45 __asm __volatile("movq %0, %%mm7"::"m"(mask32):"memory"); | 43 __asm __volatile("movq %0, %%mm7"::"m"(mask32):"memory"); |
46 while(s < mm_end) | 44 while(s < mm_end) |
47 { | 45 { |
48 #ifdef PREFETCH | 46 #ifdef PREFETCH |
49 __asm __volatile( | 47 __asm __volatile( |
50 PREFETCH" 128%0\n\t" | 48 PREFETCH" 32%0\n\t" |
51 PREFETCHW" 128%1" | 49 ::"m"(*s):"memory"); |
52 ::"m"(*s),"m"(*dest):"memory"); | |
53 #endif | 50 #endif |
54 __asm __volatile( | 51 __asm __volatile( |
55 "movd %1, %%mm0\n\t" | 52 "movd %1, %%mm0\n\t" |
56 "movd 3%1, %%mm1\n\t" | 53 "movd 3%1, %%mm1\n\t" |
57 "movd 6%1, %%mm2\n\t" | 54 "movd 6%1, %%mm2\n\t" |