comparison i386/dsputil_mmx.c @ 296:c1a8a1b4a24b libavcodec

sizeof(s->block) isnt 64*6*2 anymore bugfix mpeg12 decoding optimization
author michaelni
date Thu, 28 Mar 2002 13:41:04 +0000
parents 944632089814
children 9c6f056f0e41
comparison
equal deleted inserted replaced
295:6622b0fd036c 296:c1a8a1b4a24b
1023 pix += line_size; 1023 pix += line_size;
1024 p += 8 ; 1024 p += 8 ;
1025 } while(--h); 1025 } while(--h);
1026 } 1026 }
1027 1027
1028 static void clear_blocks_mmx(DCTELEM *blocks)
1029 {
1030 asm volatile(
1031 "pxor %%mm7, %%mm7 \n\t"
1032 "movl $-128*6, %%eax \n\t"
1033 "1: \n\t"
1034 "movq %%mm7, (%0, %%eax) \n\t"
1035 "movq %%mm7, 8(%0, %%eax) \n\t"
1036 "movq %%mm7, 16(%0, %%eax) \n\t"
1037 "movq %%mm7, 24(%0, %%eax) \n\t"
1038 "addl $32, %%eax \n\t"
1039 " js 1b \n\t"
1040 : : "r" (((int)blocks)+128*6)
1041 : "%eax"
1042 );
1043 }
1044
1028 static void just_return() { return; } 1045 static void just_return() { return; }
1029 1046
1030 void dsputil_init_mmx(void) 1047 void dsputil_init_mmx(void)
1031 { 1048 {
1032 mm_flags = mm_support(); 1049 mm_flags = mm_support();
1047 1064
1048 if (mm_flags & MM_MMX) { 1065 if (mm_flags & MM_MMX) {
1049 get_pixels = get_pixels_mmx; 1066 get_pixels = get_pixels_mmx;
1050 put_pixels_clamped = put_pixels_clamped_mmx; 1067 put_pixels_clamped = put_pixels_clamped_mmx;
1051 add_pixels_clamped = add_pixels_clamped_mmx; 1068 add_pixels_clamped = add_pixels_clamped_mmx;
1052 1069 clear_blocks= clear_blocks_mmx;
1070
1053 pix_abs16x16 = pix_abs16x16_mmx; 1071 pix_abs16x16 = pix_abs16x16_mmx;
1054 pix_abs16x16_x2 = pix_abs16x16_x2_mmx; 1072 pix_abs16x16_x2 = pix_abs16x16_x2_mmx;
1055 pix_abs16x16_y2 = pix_abs16x16_y2_mmx; 1073 pix_abs16x16_y2 = pix_abs16x16_y2_mmx;
1056 pix_abs16x16_xy2 = pix_abs16x16_xy2_mmx; 1074 pix_abs16x16_xy2 = pix_abs16x16_xy2_mmx;
1057 pix_abs8x8 = pix_abs8x8_mmx; 1075 pix_abs8x8 = pix_abs8x8_mmx;