comparison postproc/swscale_template.c @ 18392:b10d4b3cb9ec

removing esp usage this is certainly not the most beautifull but it should work without -fomit-frame-pointer and PIC and gcc-4 vomits when ebp is given in a constraint directly even with -fomi-frame-pointer so theres not that much choice ... if anyone knows a simpler/cleaner solution, dont hesitate to suggest it ...
author michael
date Sat, 06 May 2006 02:01:39 +0000
parents 7b408d60de9e
children e00cea3e1732
comparison
equal deleted inserted replaced
18391:b5c6755ffa29 18392:b10d4b3cb9ec
1216 switch(c->dstFormat) 1216 switch(c->dstFormat)
1217 { 1217 {
1218 //Note 8280 == DSTW_OFFSET but the preprocessor can't handle that there :( 1218 //Note 8280 == DSTW_OFFSET but the preprocessor can't handle that there :(
1219 case IMGFMT_BGR32: 1219 case IMGFMT_BGR32:
1220 asm volatile( 1220 asm volatile(
1221 "mov %%"REG_SP", "ESP_OFFSET"(%5) \n\t" 1221 "mov %%"REG_b", "ESP_OFFSET"(%5) \n\t"
1222 "mov %4, %%"REG_SP" \n\t" 1222 "mov %4, %%"REG_b" \n\t"
1223 YSCALEYUV2RGB(%%REGa, %5) 1223 "push %%"REG_BP" \n\t"
1224 WRITEBGR32(%%REGSP, 8280(%5), %%REGa) 1224 YSCALEYUV2RGB(%%REGBP, %5)
1225 "mov "ESP_OFFSET"(%5), %%"REG_SP" \n\t" 1225 WRITEBGR32(%%REGb, 8280(%5), %%REGBP)
1226 1226 "pop %%"REG_BP" \n\t"
1227 :: "r" (buf0), "r" (buf1), "r" (uvbuf0), "r" (uvbuf1), "m" (dest), 1227 "mov "ESP_OFFSET"(%5), %%"REG_b" \n\t"
1228 "r" (&c->redDither) 1228
1229 : "%"REG_a 1229 :: "c" (buf0), "d" (buf1), "S" (uvbuf0), "D" (uvbuf1), "m" (dest),
1230 "a" (&c->redDither)
1230 ); 1231 );
1231 return; 1232 return;
1232 case IMGFMT_BGR24: 1233 case IMGFMT_BGR24:
1233 asm volatile( 1234 asm volatile(
1234 "mov %%"REG_SP", "ESP_OFFSET"(%5) \n\t" 1235 "mov %%"REG_b", "ESP_OFFSET"(%5) \n\t"
1235 "mov %4, %%"REG_SP" \n\t" 1236 "mov %4, %%"REG_b" \n\t"
1236 YSCALEYUV2RGB(%%REGa, %5) 1237 "push %%"REG_BP" \n\t"
1237 WRITEBGR24(%%REGSP, 8280(%5), %%REGa) 1238 YSCALEYUV2RGB(%%REGBP, %5)
1238 "mov "ESP_OFFSET"(%5), %%"REG_SP" \n\t" 1239 WRITEBGR24(%%REGb, 8280(%5), %%REGBP)
1239 :: "r" (buf0), "r" (buf1), "r" (uvbuf0), "r" (uvbuf1), "m" (dest), 1240 "pop %%"REG_BP" \n\t"
1240 "r" (&c->redDither) 1241 "mov "ESP_OFFSET"(%5), %%"REG_b" \n\t"
1241 : "%"REG_a 1242 :: "c" (buf0), "d" (buf1), "S" (uvbuf0), "D" (uvbuf1), "m" (dest),
1243 "a" (&c->redDither)
1242 ); 1244 );
1243 return; 1245 return;
1244 case IMGFMT_BGR15: 1246 case IMGFMT_BGR15:
1245 asm volatile( 1247 asm volatile(
1246 "mov %%"REG_SP", "ESP_OFFSET"(%5) \n\t" 1248 "mov %%"REG_b", "ESP_OFFSET"(%5) \n\t"
1247 "mov %4, %%"REG_SP" \n\t" 1249 "mov %4, %%"REG_b" \n\t"
1248 YSCALEYUV2RGB(%%REGa, %5) 1250 "push %%"REG_BP" \n\t"
1251 YSCALEYUV2RGB(%%REGBP, %5)
1249 /* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */ 1252 /* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */
1250 #ifdef DITHER1XBPP 1253 #ifdef DITHER1XBPP
1251 "paddusb "MANGLE(b5Dither)", %%mm2\n\t" 1254 "paddusb "MANGLE(b5Dither)", %%mm2\n\t"
1252 "paddusb "MANGLE(g5Dither)", %%mm4\n\t" 1255 "paddusb "MANGLE(g5Dither)", %%mm4\n\t"
1253 "paddusb "MANGLE(r5Dither)", %%mm5\n\t" 1256 "paddusb "MANGLE(r5Dither)", %%mm5\n\t"
1254 #endif 1257 #endif
1255 1258
1256 WRITEBGR15(%%REGSP, 8280(%5), %%REGa) 1259 WRITEBGR15(%%REGb, 8280(%5), %%REGBP)
1257 "mov "ESP_OFFSET"(%5), %%"REG_SP" \n\t" 1260 "pop %%"REG_BP" \n\t"
1258 1261 "mov "ESP_OFFSET"(%5), %%"REG_b" \n\t"
1259 :: "r" (buf0), "r" (buf1), "r" (uvbuf0), "r" (uvbuf1), "m" (dest), 1262
1260 "r" (&c->redDither) 1263 :: "c" (buf0), "d" (buf1), "S" (uvbuf0), "D" (uvbuf1), "m" (dest),
1261 : "%"REG_a 1264 "a" (&c->redDither)
1262 ); 1265 );
1263 return; 1266 return;
1264 case IMGFMT_BGR16: 1267 case IMGFMT_BGR16:
1265 asm volatile( 1268 asm volatile(
1266 "mov %%"REG_SP", "ESP_OFFSET"(%5) \n\t" 1269 "mov %%"REG_b", "ESP_OFFSET"(%5) \n\t"
1267 "mov %4, %%"REG_SP" \n\t" 1270 "mov %4, %%"REG_b" \n\t"
1268 YSCALEYUV2RGB(%%REGa, %5) 1271 "push %%"REG_BP" \n\t"
1272 YSCALEYUV2RGB(%%REGBP, %5)
1269 /* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */ 1273 /* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */
1270 #ifdef DITHER1XBPP 1274 #ifdef DITHER1XBPP
1271 "paddusb "MANGLE(b5Dither)", %%mm2\n\t" 1275 "paddusb "MANGLE(b5Dither)", %%mm2\n\t"
1272 "paddusb "MANGLE(g6Dither)", %%mm4\n\t" 1276 "paddusb "MANGLE(g6Dither)", %%mm4\n\t"
1273 "paddusb "MANGLE(r5Dither)", %%mm5\n\t" 1277 "paddusb "MANGLE(r5Dither)", %%mm5\n\t"
1274 #endif 1278 #endif
1275 1279
1276 WRITEBGR16(%%REGSP, 8280(%5), %%REGa) 1280 WRITEBGR16(%%REGb, 8280(%5), %%REGBP)
1277 "mov "ESP_OFFSET"(%5), %%"REG_SP" \n\t" 1281 "pop %%"REG_BP" \n\t"
1278 :: "r" (buf0), "r" (buf1), "r" (uvbuf0), "r" (uvbuf1), "m" (dest), 1282 "mov "ESP_OFFSET"(%5), %%"REG_b" \n\t"
1279 "r" (&c->redDither) 1283 :: "c" (buf0), "d" (buf1), "S" (uvbuf0), "D" (uvbuf1), "m" (dest),
1280 : "%"REG_a 1284 "a" (&c->redDither)
1281 ); 1285 );
1282 return; 1286 return;
1283 case IMGFMT_YUY2: 1287 case IMGFMT_YUY2:
1284 asm volatile( 1288 asm volatile(
1285 "mov %%"REG_SP", "ESP_OFFSET"(%5) \n\t" 1289 "mov %%"REG_b", "ESP_OFFSET"(%5) \n\t"
1286 "mov %4, %%"REG_SP" \n\t" 1290 "mov %4, %%"REG_b" \n\t"
1287 YSCALEYUV2PACKED(%%REGa, %5) 1291 "push %%"REG_BP" \n\t"
1288 WRITEYUY2(%%REGSP, 8280(%5), %%REGa) 1292 YSCALEYUV2PACKED(%%REGBP, %5)
1289 "mov "ESP_OFFSET"(%5), %%"REG_SP" \n\t" 1293 WRITEYUY2(%%REGb, 8280(%5), %%REGBP)
1290 :: "r" (buf0), "r" (buf1), "r" (uvbuf0), "r" (uvbuf1), "m" (dest), 1294 "pop %%"REG_BP" \n\t"
1291 "r" (&c->redDither) 1295 "mov "ESP_OFFSET"(%5), %%"REG_b" \n\t"
1292 : "%"REG_a 1296 :: "c" (buf0), "d" (buf1), "S" (uvbuf0), "D" (uvbuf1), "m" (dest),
1297 "a" (&c->redDither)
1293 ); 1298 );
1294 return; 1299 return;
1295 default: break; 1300 default: break;
1296 } 1301 }
1297 #endif //HAVE_MMX 1302 #endif //HAVE_MMX
1321 { 1326 {
1322 switch(dstFormat) 1327 switch(dstFormat)
1323 { 1328 {
1324 case IMGFMT_BGR32: 1329 case IMGFMT_BGR32:
1325 asm volatile( 1330 asm volatile(
1326 "mov %%"REG_SP", "ESP_OFFSET"(%5) \n\t" 1331 "mov %%"REG_b", "ESP_OFFSET"(%5) \n\t"
1327 "mov %4, %%"REG_SP" \n\t" 1332 "mov %4, %%"REG_b" \n\t"
1328 YSCALEYUV2RGB1(%%REGa, %5) 1333 "push %%"REG_BP" \n\t"
1329 WRITEBGR32(%%REGSP, 8280(%5), %%REGa) 1334 YSCALEYUV2RGB1(%%REGBP, %5)
1330 "mov "ESP_OFFSET"(%5), %%"REG_SP" \n\t" 1335 WRITEBGR32(%%REGb, 8280(%5), %%REGBP)
1331 1336 "pop %%"REG_BP" \n\t"
1332 :: "r" (buf0), "r" (buf1), "r" (uvbuf0), "r" (uvbuf1), "m" (dest), 1337 "mov "ESP_OFFSET"(%5), %%"REG_b" \n\t"
1333 "r" (&c->redDither) 1338
1334 : "%"REG_a 1339 :: "c" (buf0), "d" (buf1), "S" (uvbuf0), "D" (uvbuf1), "m" (dest),
1340 "a" (&c->redDither)
1335 ); 1341 );
1336 return; 1342 return;
1337 case IMGFMT_BGR24: 1343 case IMGFMT_BGR24:
1338 asm volatile( 1344 asm volatile(
1339 "mov %%"REG_SP", "ESP_OFFSET"(%5) \n\t" 1345 "mov %%"REG_b", "ESP_OFFSET"(%5) \n\t"
1340 "mov %4, %%"REG_SP" \n\t" 1346 "mov %4, %%"REG_b" \n\t"
1341 YSCALEYUV2RGB1(%%REGa, %5) 1347 "push %%"REG_BP" \n\t"
1342 WRITEBGR24(%%REGSP, 8280(%5), %%REGa) 1348 YSCALEYUV2RGB1(%%REGBP, %5)
1343 "mov "ESP_OFFSET"(%5), %%"REG_SP" \n\t" 1349 WRITEBGR24(%%REGb, 8280(%5), %%REGBP)
1344 1350 "pop %%"REG_BP" \n\t"
1345 :: "r" (buf0), "r" (buf1), "r" (uvbuf0), "r" (uvbuf1), "m" (dest), 1351 "mov "ESP_OFFSET"(%5), %%"REG_b" \n\t"
1346 "r" (&c->redDither) 1352
1347 : "%"REG_a 1353 :: "c" (buf0), "d" (buf1), "S" (uvbuf0), "D" (uvbuf1), "m" (dest),
1354 "a" (&c->redDither)
1348 ); 1355 );
1349 return; 1356 return;
1350 case IMGFMT_BGR15: 1357 case IMGFMT_BGR15:
1351 asm volatile( 1358 asm volatile(
1352 "mov %%"REG_SP", "ESP_OFFSET"(%5) \n\t" 1359 "mov %%"REG_b", "ESP_OFFSET"(%5) \n\t"
1353 "mov %4, %%"REG_SP" \n\t" 1360 "mov %4, %%"REG_b" \n\t"
1354 YSCALEYUV2RGB1(%%REGa, %5) 1361 "push %%"REG_BP" \n\t"
1362 YSCALEYUV2RGB1(%%REGBP, %5)
1355 /* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */ 1363 /* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */
1356 #ifdef DITHER1XBPP 1364 #ifdef DITHER1XBPP
1357 "paddusb "MANGLE(b5Dither)", %%mm2\n\t" 1365 "paddusb "MANGLE(b5Dither)", %%mm2\n\t"
1358 "paddusb "MANGLE(g5Dither)", %%mm4\n\t" 1366 "paddusb "MANGLE(g5Dither)", %%mm4\n\t"
1359 "paddusb "MANGLE(r5Dither)", %%mm5\n\t" 1367 "paddusb "MANGLE(r5Dither)", %%mm5\n\t"
1360 #endif 1368 #endif
1361 WRITEBGR15(%%REGSP, 8280(%5), %%REGa) 1369 WRITEBGR15(%%REGb, 8280(%5), %%REGBP)
1362 "mov "ESP_OFFSET"(%5), %%"REG_SP" \n\t" 1370 "pop %%"REG_BP" \n\t"
1363 1371 "mov "ESP_OFFSET"(%5), %%"REG_b" \n\t"
1364 :: "r" (buf0), "r" (buf1), "r" (uvbuf0), "r" (uvbuf1), "m" (dest), 1372
1365 "r" (&c->redDither) 1373 :: "c" (buf0), "d" (buf1), "S" (uvbuf0), "D" (uvbuf1), "m" (dest),
1366 : "%"REG_a 1374 "a" (&c->redDither)
1367 ); 1375 );
1368 return; 1376 return;
1369 case IMGFMT_BGR16: 1377 case IMGFMT_BGR16:
1370 asm volatile( 1378 asm volatile(
1371 "mov %%"REG_SP", "ESP_OFFSET"(%5) \n\t" 1379 "mov %%"REG_b", "ESP_OFFSET"(%5) \n\t"
1372 "mov %4, %%"REG_SP" \n\t" 1380 "mov %4, %%"REG_b" \n\t"
1373 YSCALEYUV2RGB1(%%REGa, %5) 1381 "push %%"REG_BP" \n\t"
1382 YSCALEYUV2RGB1(%%REGBP, %5)
1374 /* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */ 1383 /* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */
1375 #ifdef DITHER1XBPP 1384 #ifdef DITHER1XBPP
1376 "paddusb "MANGLE(b5Dither)", %%mm2\n\t" 1385 "paddusb "MANGLE(b5Dither)", %%mm2\n\t"
1377 "paddusb "MANGLE(g6Dither)", %%mm4\n\t" 1386 "paddusb "MANGLE(g6Dither)", %%mm4\n\t"
1378 "paddusb "MANGLE(r5Dither)", %%mm5\n\t" 1387 "paddusb "MANGLE(r5Dither)", %%mm5\n\t"
1379 #endif 1388 #endif
1380 1389
1381 WRITEBGR16(%%REGSP, 8280(%5), %%REGa) 1390 WRITEBGR16(%%REGb, 8280(%5), %%REGBP)
1382 "mov "ESP_OFFSET"(%5), %%"REG_SP" \n\t" 1391 "pop %%"REG_BP" \n\t"
1383 1392 "mov "ESP_OFFSET"(%5), %%"REG_b" \n\t"
1384 :: "r" (buf0), "r" (buf1), "r" (uvbuf0), "r" (uvbuf1), "m" (dest), 1393
1385 "r" (&c->redDither) 1394 :: "c" (buf0), "d" (buf1), "S" (uvbuf0), "D" (uvbuf1), "m" (dest),
1386 : "%"REG_a 1395 "a" (&c->redDither)
1387 ); 1396 );
1388 return; 1397 return;
1389 case IMGFMT_YUY2: 1398 case IMGFMT_YUY2:
1390 asm volatile( 1399 asm volatile(
1391 "mov %%"REG_SP", "ESP_OFFSET"(%5) \n\t" 1400 "mov %%"REG_b", "ESP_OFFSET"(%5) \n\t"
1392 "mov %4, %%"REG_SP" \n\t" 1401 "mov %4, %%"REG_b" \n\t"
1393 YSCALEYUV2PACKED1(%%REGa, %5) 1402 "push %%"REG_BP" \n\t"
1394 WRITEYUY2(%%REGSP, 8280(%5), %%REGa) 1403 YSCALEYUV2PACKED1(%%REGBP, %5)
1395 "mov "ESP_OFFSET"(%5), %%"REG_SP" \n\t" 1404 WRITEYUY2(%%REGb, 8280(%5), %%REGBP)
1396 1405 "pop %%"REG_BP" \n\t"
1397 :: "r" (buf0), "r" (buf1), "r" (uvbuf0), "r" (uvbuf1), "m" (dest), 1406 "mov "ESP_OFFSET"(%5), %%"REG_b" \n\t"
1398 "r" (&c->redDither) 1407
1399 : "%"REG_a 1408 :: "c" (buf0), "d" (buf1), "S" (uvbuf0), "D" (uvbuf1), "m" (dest),
1409 "a" (&c->redDither)
1400 ); 1410 );
1401 return; 1411 return;
1402 } 1412 }
1403 } 1413 }
1404 else 1414 else
1405 { 1415 {
1406 switch(dstFormat) 1416 switch(dstFormat)
1407 { 1417 {
1408 case IMGFMT_BGR32: 1418 case IMGFMT_BGR32:
1409 asm volatile( 1419 asm volatile(
1410 "mov %%"REG_SP", "ESP_OFFSET"(%5) \n\t" 1420 "mov %%"REG_b", "ESP_OFFSET"(%5) \n\t"
1411 "mov %4, %%"REG_SP" \n\t" 1421 "mov %4, %%"REG_b" \n\t"
1412 YSCALEYUV2RGB1b(%%REGa, %5) 1422 "push %%"REG_BP" \n\t"
1413 WRITEBGR32(%%REGSP, 8280(%5), %%REGa) 1423 YSCALEYUV2RGB1b(%%REGBP, %5)
1414 "mov "ESP_OFFSET"(%5), %%"REG_SP" \n\t" 1424 WRITEBGR32(%%REGb, 8280(%5), %%REGBP)
1415 1425 "pop %%"REG_BP" \n\t"
1416 :: "r" (buf0), "r" (buf1), "r" (uvbuf0), "r" (uvbuf1), "m" (dest), 1426 "mov "ESP_OFFSET"(%5), %%"REG_b" \n\t"
1417 "r" (&c->redDither) 1427
1418 : "%"REG_a 1428 :: "c" (buf0), "d" (buf1), "S" (uvbuf0), "D" (uvbuf1), "m" (dest),
1429 "a" (&c->redDither)
1419 ); 1430 );
1420 return; 1431 return;
1421 case IMGFMT_BGR24: 1432 case IMGFMT_BGR24:
1422 asm volatile( 1433 asm volatile(
1423 "mov %%"REG_SP", "ESP_OFFSET"(%5) \n\t" 1434 "mov %%"REG_b", "ESP_OFFSET"(%5) \n\t"
1424 "mov %4, %%"REG_SP" \n\t" 1435 "mov %4, %%"REG_b" \n\t"
1425 YSCALEYUV2RGB1b(%%REGa, %5) 1436 "push %%"REG_BP" \n\t"
1426 WRITEBGR24(%%REGSP, 8280(%5), %%REGa) 1437 YSCALEYUV2RGB1b(%%REGBP, %5)
1427 "mov "ESP_OFFSET"(%5), %%"REG_SP" \n\t" 1438 WRITEBGR24(%%REGb, 8280(%5), %%REGBP)
1428 1439 "pop %%"REG_BP" \n\t"
1429 :: "r" (buf0), "r" (buf1), "r" (uvbuf0), "r" (uvbuf1), "m" (dest), 1440 "mov "ESP_OFFSET"(%5), %%"REG_b" \n\t"
1430 "r" (&c->redDither) 1441
1431 : "%"REG_a 1442 :: "c" (buf0), "d" (buf1), "S" (uvbuf0), "D" (uvbuf1), "m" (dest),
1443 "a" (&c->redDither)
1432 ); 1444 );
1433 return; 1445 return;
1434 case IMGFMT_BGR15: 1446 case IMGFMT_BGR15:
1435 asm volatile( 1447 asm volatile(
1436 "mov %%"REG_SP", "ESP_OFFSET"(%5) \n\t" 1448 "mov %%"REG_b", "ESP_OFFSET"(%5) \n\t"
1437 "mov %4, %%"REG_SP" \n\t" 1449 "mov %4, %%"REG_b" \n\t"
1438 YSCALEYUV2RGB1b(%%REGa, %5) 1450 "push %%"REG_BP" \n\t"
1451 YSCALEYUV2RGB1b(%%REGBP, %5)
1439 /* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */ 1452 /* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */
1440 #ifdef DITHER1XBPP 1453 #ifdef DITHER1XBPP
1441 "paddusb "MANGLE(b5Dither)", %%mm2\n\t" 1454 "paddusb "MANGLE(b5Dither)", %%mm2\n\t"
1442 "paddusb "MANGLE(g5Dither)", %%mm4\n\t" 1455 "paddusb "MANGLE(g5Dither)", %%mm4\n\t"
1443 "paddusb "MANGLE(r5Dither)", %%mm5\n\t" 1456 "paddusb "MANGLE(r5Dither)", %%mm5\n\t"
1444 #endif 1457 #endif
1445 WRITEBGR15(%%REGSP, 8280(%5), %%REGa) 1458 WRITEBGR15(%%REGb, 8280(%5), %%REGBP)
1446 "mov "ESP_OFFSET"(%5), %%"REG_SP" \n\t" 1459 "pop %%"REG_BP" \n\t"
1447 1460 "mov "ESP_OFFSET"(%5), %%"REG_b" \n\t"
1448 :: "r" (buf0), "r" (buf1), "r" (uvbuf0), "r" (uvbuf1), "m" (dest), 1461
1449 "r" (&c->redDither) 1462 :: "c" (buf0), "d" (buf1), "S" (uvbuf0), "D" (uvbuf1), "m" (dest),
1450 : "%"REG_a 1463 "a" (&c->redDither)
1451 ); 1464 );
1452 return; 1465 return;
1453 case IMGFMT_BGR16: 1466 case IMGFMT_BGR16:
1454 asm volatile( 1467 asm volatile(
1455 "mov %%"REG_SP", "ESP_OFFSET"(%5) \n\t" 1468 "mov %%"REG_b", "ESP_OFFSET"(%5) \n\t"
1456 "mov %4, %%"REG_SP" \n\t" 1469 "mov %4, %%"REG_b" \n\t"
1457 YSCALEYUV2RGB1b(%%REGa, %5) 1470 "push %%"REG_BP" \n\t"
1471 YSCALEYUV2RGB1b(%%REGBP, %5)
1458 /* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */ 1472 /* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */
1459 #ifdef DITHER1XBPP 1473 #ifdef DITHER1XBPP
1460 "paddusb "MANGLE(b5Dither)", %%mm2\n\t" 1474 "paddusb "MANGLE(b5Dither)", %%mm2\n\t"
1461 "paddusb "MANGLE(g6Dither)", %%mm4\n\t" 1475 "paddusb "MANGLE(g6Dither)", %%mm4\n\t"
1462 "paddusb "MANGLE(r5Dither)", %%mm5\n\t" 1476 "paddusb "MANGLE(r5Dither)", %%mm5\n\t"
1463 #endif 1477 #endif
1464 1478
1465 WRITEBGR16(%%REGSP, 8280(%5), %%REGa) 1479 WRITEBGR16(%%REGb, 8280(%5), %%REGBP)
1466 "mov "ESP_OFFSET"(%5), %%"REG_SP" \n\t" 1480 "pop %%"REG_BP" \n\t"
1467 1481 "mov "ESP_OFFSET"(%5), %%"REG_b" \n\t"
1468 :: "r" (buf0), "r" (buf1), "r" (uvbuf0), "r" (uvbuf1), "m" (dest), 1482
1469 "r" (&c->redDither) 1483 :: "c" (buf0), "d" (buf1), "S" (uvbuf0), "D" (uvbuf1), "m" (dest),
1470 : "%"REG_a 1484 "a" (&c->redDither)
1471 ); 1485 );
1472 return; 1486 return;
1473 case IMGFMT_YUY2: 1487 case IMGFMT_YUY2:
1474 asm volatile( 1488 asm volatile(
1475 "mov %%"REG_SP", "ESP_OFFSET"(%5) \n\t" 1489 "mov %%"REG_b", "ESP_OFFSET"(%5) \n\t"
1476 "mov %4, %%"REG_SP" \n\t" 1490 "mov %4, %%"REG_b" \n\t"
1477 YSCALEYUV2PACKED1b(%%REGa, %5) 1491 "push %%"REG_BP" \n\t"
1478 WRITEYUY2(%%REGSP, 8280(%5), %%REGa) 1492 YSCALEYUV2PACKED1b(%%REGBP, %5)
1479 "mov "ESP_OFFSET"(%5), %%"REG_SP" \n\t" 1493 WRITEYUY2(%%REGb, 8280(%5), %%REGBP)
1480 1494 "pop %%"REG_BP" \n\t"
1481 :: "r" (buf0), "r" (buf1), "r" (uvbuf0), "r" (uvbuf1), "m" (dest), 1495 "mov "ESP_OFFSET"(%5), %%"REG_b" \n\t"
1482 "r" (&c->redDither) 1496
1483 : "%"REG_a 1497 :: "c" (buf0), "d" (buf1), "S" (uvbuf0), "D" (uvbuf1), "m" (dest),
1498 "a" (&c->redDither)
1484 ); 1499 );
1485 return; 1500 return;
1486 } 1501 }
1487 } 1502 }
1488 #endif 1503 #endif