Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 48947
Collapse All | Expand All

(-)SDL-1.2.7/src/audio/SDL_mixer_MMX.c (-10 / +10 lines)
Lines 19-27 Link Here
19
"	movl %1,%%esi\n"	// esi = src
19
"	movl %1,%%esi\n"	// esi = src
20
"	movl %3,%%eax\n"	// eax = volume
20
"	movl %3,%%eax\n"	// eax = volume
21
21
22
"	movl %2,%%ebx\n"	// ebx = size
22
"	movl %2,%%edx\n"	// edx = size
23
23
24
"	shrl $4,%%ebx\n"	// process 16 bytes per iteration = 8 samples
24
"	shrl $4,%%edx\n"	// process 16 bytes per iteration = 8 samples
25
25
26
"	jz .endS16\n"
26
"	jz .endS16\n"
27
27
Lines 95-101 Link Here
95
95
96
"	addl $16,%%edi\n"
96
"	addl $16,%%edi\n"
97
97
98
"	dec %%ebx\n"
98
"	dec %%edx\n"
99
99
100
"	jnz .mixloopS16\n"
100
"	jnz .mixloopS16\n"
101
101
Lines 105-111 Link Here
105
	 :
105
	 :
106
	 : "m" (dst), "m"(src),"m"(size),
106
	 : "m" (dst), "m"(src),"m"(size),
107
	 "m"(volume)
107
	 "m"(volume)
108
	 : "eax","ebx", "esi", "edi","memory"
108
	 : "eax","edx", "esi", "edi","memory"
109
	 );
109
	 );
110
}
110
}
111
111
Lines 123-129 Link Here
123
"	movl %1,%%esi\n"	// esi = src
123
"	movl %1,%%esi\n"	// esi = src
124
"	movl %3,%%eax\n"	// eax = volume
124
"	movl %3,%%eax\n"	// eax = volume
125
125
126
"	movd %%ebx,%%mm0\n"
126
"	movd %%edx,%%mm0\n"
127
"	movq %%mm0,%%mm1\n"
127
"	movq %%mm0,%%mm1\n"
128
"	psllq $16,%%mm0\n"
128
"	psllq $16,%%mm0\n"
129
"	por %%mm1,%%mm0\n"
129
"	por %%mm1,%%mm0\n"
Lines 132-141 Link Here
132
"	psllq $16,%%mm0\n"
132
"	psllq $16,%%mm0\n"
133
"	por %%mm1,%%mm0\n"
133
"	por %%mm1,%%mm0\n"
134
134
135
"	movl %2,%%ebx\n"	// ebx = size
135
"	movl %2,%%edx\n"	// edx = size
136
"	shr $3,%%ebx\n"	// process 8 bytes per iteration = 8 samples
136
"	shr $3,%%edx\n"	// process 8 bytes per iteration = 8 samples
137
137
138
"	cmp $0,%%ebx\n"
138
"	cmp $0,%%edx\n"
139
"	je .endS8\n"
139
"	je .endS8\n"
140
140
141
".align 16\n"
141
".align 16\n"
Lines 169-175 Link Here
169
"	movq %%mm3,(%%edi)\n"	// store back to ram
169
"	movq %%mm3,(%%edi)\n"	// store back to ram
170
"	addl $8,%%edi\n"
170
"	addl $8,%%edi\n"
171
171
172
"	dec %%ebx\n"
172
"	dec %%edx\n"
173
173
174
"	jnz .mixloopS8\n"
174
"	jnz .mixloopS8\n"
175
175
Lines 178-184 Link Here
178
	 :
178
	 :
179
	 : "m" (dst), "m"(src),"m"(size),
179
	 : "m" (dst), "m"(src),"m"(size),
180
	 "m"(volume)
180
	 "m"(volume)
181
	 : "eax","ebx", "esi", "edi","memory"
181
	 : "eax","edx", "esi", "edi","memory"
182
	 );
182
	 );
183
}
183
}
184
#endif
184
#endif
(-)SDL-1.2.7/src/cpuinfo/SDL_cpuinfo.c (-2 / +2 lines)
Lines 118-124 Link Here
118
"        movl    %%edi,%%ebx\n"
118
"        movl    %%edi,%%ebx\n"
119
	: "=m" (features)
119
	: "=m" (features)
120
	:
120
	:
121
	: "%eax", "%ebx", "%ecx", "%edx", "%edi"
121
	: "%eax", "%ecx", "%edx", "%edi"
122
	);
122
	);
123
#elif defined(_MSC_VER)
123
#elif defined(_MSC_VER)
124
	__asm {
124
	__asm {
Lines 153-159 Link Here
153
"        movl    %%edi,%%ebx\n"
153
"        movl    %%edi,%%ebx\n"
154
	: "=m" (features)
154
	: "=m" (features)
155
	:
155
	:
156
	: "%eax", "%ebx", "%ecx", "%edx", "%edi"
156
	: "%eax", "%ecx", "%edx", "%edi"
157
	);
157
	);
158
#elif defined(_MSC_VER)
158
#elif defined(_MSC_VER)
159
	__asm {
159
	__asm {
(-)SDL-1.2.7/src/video/SDL_yuv_mmx.c (-12 / +26 lines)
Lines 120-131 Link Here
120
		 "movd (%2), %%mm2\n"           //    0  0  0  0 l3 l2 l1 l0
120
		 "movd (%2), %%mm2\n"           //    0  0  0  0 l3 l2 l1 l0
121
		 "punpcklbw %%mm7,%%mm1\n" //         0  v3 0  v2 00 v1 00 v0
121
		 "punpcklbw %%mm7,%%mm1\n" //         0  v3 0  v2 00 v1 00 v0
122
		 "punpckldq %%mm1,%%mm1\n" //         00 v1 00 v0 00 v1 00 v0
122
		 "punpckldq %%mm1,%%mm1\n" //         00 v1 00 v0 00 v1 00 v0
123
		 "psubw _MMX_0080w,%%mm1\n"  // mm1-128:r1 r1 r0 r0 r1 r1 r0 r0 
123
		 "psubw %[_MMX_0080w],%%mm1\n"  // mm1-128:r1 r1 r0 r0 r1 r1 r0 r0 
124
124
125
		 // create Cr_g (result in mm0)
125
		 // create Cr_g (result in mm0)
126
		 "movq %%mm1,%%mm0\n"           // r1 r1 r0 r0 r1 r1 r0 r0
126
		 "movq %%mm1,%%mm0\n"           // r1 r1 r0 r0 r1 r1 r0 r0
127
		 "pmullw _MMX_VgrnRGB,%%mm0\n"// red*-46dec=0.7136*64
127
		 "pmullw %[_MMX_VgrnRGB],%%mm0\n"// red*-46dec=0.7136*64
128
		 "pmullw _MMX_VredRGB,%%mm1\n"// red*89dec=1.4013*64
128
		 "pmullw %[_MMX_VredRGB],%%mm1\n"// red*89dec=1.4013*64
129
		 "psraw  $6, %%mm0\n"           // red=red/64
129
		 "psraw  $6, %%mm0\n"           // red=red/64
130
		 "psraw  $6, %%mm1\n"           // red=red/64
130
		 "psraw  $6, %%mm1\n"           // red=red/64
131
		 
131
		 
Lines 134-141 Link Here
134
		 "movq (%2,%4),%%mm3\n"         //    0  0  0  0 L3 L2 L1 L0
134
		 "movq (%2,%4),%%mm3\n"         //    0  0  0  0 L3 L2 L1 L0
135
		 "punpckldq %%mm3,%%mm2\n"      //   L3 L2 L1 L0 l3 l2 l1 l0
135
		 "punpckldq %%mm3,%%mm2\n"      //   L3 L2 L1 L0 l3 l2 l1 l0
136
		 "movq %%mm2,%%mm4\n"           //   L3 L2 L1 L0 l3 l2 l1 l0
136
		 "movq %%mm2,%%mm4\n"           //   L3 L2 L1 L0 l3 l2 l1 l0
137
		 "pand _MMX_FF00w,%%mm2\n"      //   L3 0  L1  0 l3  0 l1  0
137
		 "pand %[_MMX_FF00w],%%mm2\n"      //   L3 0  L1  0 l3  0 l1  0
138
		 "pand _MMX_00FFw,%%mm4\n"      //   0  L2  0 L0  0 l2  0 l0
138
		 "pand %[_MMX_00FFw],%%mm4\n"      //   0  L2  0 L0  0 l2  0 l0
139
		 "psrlw $8,%%mm2\n"             //   0  L3  0 L1  0 l3  0 l1
139
		 "psrlw $8,%%mm2\n"             //   0  L3  0 L1  0 l3  0 l1
140
140
141
		 // create R (result in mm6)
141
		 // create R (result in mm6)
Lines 152-162 Link Here
152
		 "movd (%1), %%mm1\n"      //         0  0  0  0  u3 u2 u1 u0
152
		 "movd (%1), %%mm1\n"      //         0  0  0  0  u3 u2 u1 u0
153
		 "punpcklbw %%mm7,%%mm1\n" //         0  u3 0  u2 00 u1 00 u0
153
		 "punpcklbw %%mm7,%%mm1\n" //         0  u3 0  u2 00 u1 00 u0
154
		 "punpckldq %%mm1,%%mm1\n" //         00 u1 00 u0 00 u1 00 u0
154
		 "punpckldq %%mm1,%%mm1\n" //         00 u1 00 u0 00 u1 00 u0
155
		 "psubw _MMX_0080w,%%mm1\n"  // mm1-128:u1 u1 u0 u0 u1 u1 u0 u0 
155
		 "psubw %[_MMX_0080w],%%mm1\n"  // mm1-128:u1 u1 u0 u0 u1 u1 u0 u0 
156
		 // create Cb_g (result in mm5)
156
		 // create Cb_g (result in mm5)
157
		 "movq %%mm1,%%mm5\n"            // u1 u1 u0 u0 u1 u1 u0 u0
157
		 "movq %%mm1,%%mm5\n"            // u1 u1 u0 u0 u1 u1 u0 u0
158
		 "pmullw _MMX_UgrnRGB,%%mm5\n"    // blue*-109dec=1.7129*64
158
		 "pmullw %[_MMX_UgrnRGB],%%mm5\n"    // blue*-109dec=1.7129*64
159
		 "pmullw _MMX_UbluRGB,%%mm1\n"    // blue*114dec=1.78125*64
159
		 "pmullw %[_MMX_UbluRGB],%%mm1\n"    // blue*114dec=1.78125*64
160
		 "psraw  $6, %%mm5\n"            // blue=red/64
160
		 "psraw  $6, %%mm5\n"            // blue=red/64
161
		 "psraw  $6, %%mm1\n"            // blue=blue/64
161
		 "psraw  $6, %%mm1\n"            // blue=blue/64
162
162
Lines 238-245 Link Here
238
		 "popl %%ebx\n"
238
		 "popl %%ebx\n"
239
		 :
239
		 :
240
		 : "m" (cr), "r"(cb),"r"(lum),
240
		 : "m" (cr), "r"(cb),"r"(lum),
241
		 "r"(row1),"r"(cols),"r"(row2),"m"(x),"m"(y),"m"(mod)
241
		 "r"(row1),"r"(cols),"r"(row2),"m"(x),"m"(y),"m"(mod),
242
		 : "%ebx"
242
         [_MMX_0080w] "m" (*_MMX_0080w),
243
         [_MMX_00FFw] "m" (*_MMX_00FFw),
244
         [_MMX_FF00w] "m" (*_MMX_FF00w),
245
         [_MMX_VgrnRGB] "m" (*_MMX_VgrnRGB),
246
         [_MMX_VredRGB] "m" (*_MMX_VredRGB),
247
         [_MMX_UgrnRGB] "m" (*_MMX_UgrnRGB),
248
         [_MMX_UbluRGB] "m" (*_MMX_UbluRGB)
243
		 );
249
		 );
244
}
250
}
245
251
Lines 413-420 Link Here
413
	 "popl %%ebx\n"
419
	 "popl %%ebx\n"
414
         :
420
         :
415
         :"m" (cr), "r"(cb),"r"(lum),
421
         :"m" (cr), "r"(cb),"r"(lum),
416
	 "r"(row1),"r"(cols),"r"(row2),"m"(x),"m"(y),"m"(mod)
422
	 "r"(row1),"r"(cols),"r"(row2),"m"(x),"m"(y),"m"(mod),
417
	 : "%ebx"
423
     [_MMX_0080w] "m" (*_MMX_0080w),
424
 [_MMX_Ugrn565] "m" (*_MMX_Ugrn565),
425
 [_MMX_Ublu5x5] "m" (*_MMX_Ublu5x5),
426
 [_MMX_00FFw] "m" (*_MMX_00FFw),
427
 [_MMX_Vgrn565] "m" (*_MMX_Vgrn565),
428
 [_MMX_Vred5x5] "m" (*_MMX_Vred5x5),
429
 [_MMX_Ycoeff] "m" (*_MMX_Ycoeff),
430
 [_MMX_red565] "m" (*_MMX_red565),
431
 [_MMX_grn565] "m" (*_MMX_grn565)
418
         );
432
         );
419
}
433
}
420
434

Return to bug 48947