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"