Mercurial > mplayer.hg
comparison mp3lib/dct64_sse.c @ 32526:741d36324244
Use fist(p)s instead of fist(p), fixes compilation with clang.
Patch by smail Dnmez, ismail namtrac org
author | cehoyos |
---|---|
date | Wed, 10 Nov 2010 00:10:49 +0000 |
parents | cad51466b42e |
children | 5e58893a6478 |
comparison
equal
deleted
inserted
replaced
32525:11b0a82d018c | 32526:741d36324244 |
---|---|
279 out1[240] = (short)(b1[31]); | 279 out1[240] = (short)(b1[31]); |
280 out1[208] = (short)(b1[31] + b1[23]); | 280 out1[208] = (short)(b1[31] + b1[23]); |
281 | 281 |
282 #else | 282 #else |
283 /* | 283 /* |
284 To do saturation efficiently in x86 we can use fist(t)(p), | 284 To do saturation efficiently in x86 we can use fist(p)s, |
285 pf2iw, or packssdw. We use fist(p) here. | 285 pf2iw, or packssdw. We use fist(p)s here. |
286 */ | 286 */ |
287 __asm__( | 287 __asm__( |
288 "flds %0\n\t" | 288 "flds %0\n\t" |
289 "flds (%2)\n\t" | 289 "flds (%2)\n\t" |
290 "fadds 4(%2)\n\t" | 290 "fadds 4(%2)\n\t" |
291 "fistp 512(%3)\n\t" | 291 "fistps 512(%3)\n\t" |
292 | 292 |
293 "flds (%2)\n\t" | 293 "flds (%2)\n\t" |
294 "fsubs 4(%2)\n\t" | 294 "fsubs 4(%2)\n\t" |
295 "fmul %%st(1)\n\t" | 295 "fmul %%st(1)\n\t" |
296 "fistp (%3)\n\t" | 296 "fistps (%3)\n\t" |
297 | 297 |
298 "flds 12(%2)\n\t" | 298 "flds 12(%2)\n\t" |
299 "fsubs 8(%2)\n\t" | 299 "fsubs 8(%2)\n\t" |
300 "fmul %%st(1)\n\t" | 300 "fmul %%st(1)\n\t" |
301 "fist 256(%4)\n\t" | 301 "fists 256(%4)\n\t" |
302 "fadds 12(%2)\n\t" | 302 "fadds 12(%2)\n\t" |
303 "fadds 8(%2)\n\t" | 303 "fadds 8(%2)\n\t" |
304 "fistp 256(%3)\n\t" | 304 "fistps 256(%3)\n\t" |
305 | 305 |
306 "flds 16(%2)\n\t" | 306 "flds 16(%2)\n\t" |
307 "fsubs 20(%2)\n\t" | 307 "fsubs 20(%2)\n\t" |
308 "fmul %%st(1)\n\t" | 308 "fmul %%st(1)\n\t" |
309 | 309 |
310 "flds 28(%2)\n\t" | 310 "flds 28(%2)\n\t" |
311 "fsubs 24(%2)\n\t" | 311 "fsubs 24(%2)\n\t" |
312 "fmul %%st(2)\n\t" | 312 "fmul %%st(2)\n\t" |
313 "fist 384(%4)\n\t" | 313 "fists 384(%4)\n\t" |
314 "fld %%st(0)\n\t" | 314 "fld %%st(0)\n\t" |
315 "fadds 24(%2)\n\t" | 315 "fadds 24(%2)\n\t" |
316 "fadds 28(%2)\n\t" | 316 "fadds 28(%2)\n\t" |
317 "fld %%st(0)\n\t" | 317 "fld %%st(0)\n\t" |
318 "fadds 16(%2)\n\t" | 318 "fadds 16(%2)\n\t" |
319 "fadds 20(%2)\n\t" | 319 "fadds 20(%2)\n\t" |
320 "fistp 384(%3)\n\t" | 320 "fistps 384(%3)\n\t" |
321 "fadd %%st(2)\n\t" | 321 "fadd %%st(2)\n\t" |
322 "fistp 128(%3)\n\t" | 322 "fistps 128(%3)\n\t" |
323 "faddp %%st(1)\n\t" | 323 "faddp %%st(1)\n\t" |
324 "fistp 128(%4)\n\t" | 324 "fistps 128(%4)\n\t" |
325 | 325 |
326 "flds 32(%1)\n\t" | 326 "flds 32(%1)\n\t" |
327 "fadds 48(%1)\n\t" | 327 "fadds 48(%1)\n\t" |
328 "fistp 448(%3)\n\t" | 328 "fistps 448(%3)\n\t" |
329 | 329 |
330 "flds 48(%1)\n\t" | 330 "flds 48(%1)\n\t" |
331 "fadds 40(%1)\n\t" | 331 "fadds 40(%1)\n\t" |
332 "fistp 320(%3)\n\t" | 332 "fistps 320(%3)\n\t" |
333 | 333 |
334 "flds 40(%1)\n\t" | 334 "flds 40(%1)\n\t" |
335 "fadds 56(%1)\n\t" | 335 "fadds 56(%1)\n\t" |
336 "fistp 192(%3)\n\t" | 336 "fistps 192(%3)\n\t" |
337 | 337 |
338 "flds 56(%1)\n\t" | 338 "flds 56(%1)\n\t" |
339 "fadds 36(%1)\n\t" | 339 "fadds 36(%1)\n\t" |
340 "fistp 64(%3)\n\t" | 340 "fistps 64(%3)\n\t" |
341 | 341 |
342 "flds 36(%1)\n\t" | 342 "flds 36(%1)\n\t" |
343 "fadds 52(%1)\n\t" | 343 "fadds 52(%1)\n\t" |
344 "fistp 64(%4)\n\t" | 344 "fistps 64(%4)\n\t" |
345 | 345 |
346 "flds 52(%1)\n\t" | 346 "flds 52(%1)\n\t" |
347 "fadds 44(%1)\n\t" | 347 "fadds 44(%1)\n\t" |
348 "fistp 192(%4)\n\t" | 348 "fistps 192(%4)\n\t" |
349 | 349 |
350 "flds 60(%1)\n\t" | 350 "flds 60(%1)\n\t" |
351 "fist 448(%4)\n\t" | 351 "fists 448(%4)\n\t" |
352 "fadds 44(%1)\n\t" | 352 "fadds 44(%1)\n\t" |
353 "fistp 320(%4)\n\t" | 353 "fistps 320(%4)\n\t" |
354 | 354 |
355 "flds 96(%1)\n\t" | 355 "flds 96(%1)\n\t" |
356 "fadds 112(%1)\n\t" | 356 "fadds 112(%1)\n\t" |
357 "fld %%st(0)\n\t" | 357 "fld %%st(0)\n\t" |
358 "fadds 64(%1)\n\t" | 358 "fadds 64(%1)\n\t" |
359 "fistp 480(%3)\n\t" | 359 "fistps 480(%3)\n\t" |
360 "fadds 80(%1)\n\t" | 360 "fadds 80(%1)\n\t" |
361 "fistp 416(%3)\n\t" | 361 "fistps 416(%3)\n\t" |
362 | 362 |
363 "flds 112(%1)\n\t" | 363 "flds 112(%1)\n\t" |
364 "fadds 104(%1)\n\t" | 364 "fadds 104(%1)\n\t" |
365 "fld %%st(0)\n\t" | 365 "fld %%st(0)\n\t" |
366 "fadds 80(%1)\n\t" | 366 "fadds 80(%1)\n\t" |
367 "fistp 352(%3)\n\t" | 367 "fistps 352(%3)\n\t" |
368 "fadds 72(%1)\n\t" | 368 "fadds 72(%1)\n\t" |
369 "fistp 288(%3)\n\t" | 369 "fistps 288(%3)\n\t" |
370 | 370 |
371 "flds 104(%1)\n\t" | 371 "flds 104(%1)\n\t" |
372 "fadds 120(%1)\n\t" | 372 "fadds 120(%1)\n\t" |
373 "fld %%st(0)\n\t" | 373 "fld %%st(0)\n\t" |
374 "fadds 72(%1)\n\t" | 374 "fadds 72(%1)\n\t" |
375 "fistp 224(%3)\n\t" | 375 "fistps 224(%3)\n\t" |
376 "fadds 88(%1)\n\t" | 376 "fadds 88(%1)\n\t" |
377 "fistp 160(%3)\n\t" | 377 "fistps 160(%3)\n\t" |
378 | 378 |
379 "flds 120(%1)\n\t" | 379 "flds 120(%1)\n\t" |
380 "fadds 100(%1)\n\t" | 380 "fadds 100(%1)\n\t" |
381 "fld %%st(0)\n\t" | 381 "fld %%st(0)\n\t" |
382 "fadds 88(%1)\n\t" | 382 "fadds 88(%1)\n\t" |
383 "fistp 96(%3)\n\t" | 383 "fistps 96(%3)\n\t" |
384 "fadds 68(%1)\n\t" | 384 "fadds 68(%1)\n\t" |
385 "fistp 32(%3)\n\t" | 385 "fistps 32(%3)\n\t" |
386 | 386 |
387 "flds 100(%1)\n\t" | 387 "flds 100(%1)\n\t" |
388 "fadds 116(%1)\n\t" | 388 "fadds 116(%1)\n\t" |
389 "fld %%st(0)\n\t" | 389 "fld %%st(0)\n\t" |
390 "fadds 68(%1)\n\t" | 390 "fadds 68(%1)\n\t" |
391 "fistp 32(%4)\n\t" | 391 "fistps 32(%4)\n\t" |
392 "fadds 84(%1)\n\t" | 392 "fadds 84(%1)\n\t" |
393 "fistp 96(%4)\n\t" | 393 "fistps 96(%4)\n\t" |
394 | 394 |
395 "flds 116(%1)\n\t" | 395 "flds 116(%1)\n\t" |
396 "fadds 108(%1)\n\t" | 396 "fadds 108(%1)\n\t" |
397 "fld %%st(0)\n\t" | 397 "fld %%st(0)\n\t" |
398 "fadds 84(%1)\n\t" | 398 "fadds 84(%1)\n\t" |
399 "fistp 160(%4)\n\t" | 399 "fistps 160(%4)\n\t" |
400 "fadds 76(%1)\n\t" | 400 "fadds 76(%1)\n\t" |
401 "fistp 224(%4)\n\t" | 401 "fistps 224(%4)\n\t" |
402 | 402 |
403 "flds 108(%1)\n\t" | 403 "flds 108(%1)\n\t" |
404 "fadds 124(%1)\n\t" | 404 "fadds 124(%1)\n\t" |
405 "fld %%st(0)\n\t" | 405 "fld %%st(0)\n\t" |
406 "fadds 76(%1)\n\t" | 406 "fadds 76(%1)\n\t" |
407 "fistp 288(%4)\n\t" | 407 "fistps 288(%4)\n\t" |
408 "fadds 92(%1)\n\t" | 408 "fadds 92(%1)\n\t" |
409 "fistp 352(%4)\n\t" | 409 "fistps 352(%4)\n\t" |
410 | 410 |
411 "flds 124(%1)\n\t" | 411 "flds 124(%1)\n\t" |
412 "fist 480(%4)\n\t" | 412 "fists 480(%4)\n\t" |
413 "fadds 92(%1)\n\t" | 413 "fadds 92(%1)\n\t" |
414 "fistp 416(%4)\n\t" | 414 "fistps 416(%4)\n\t" |
415 ".byte 0xdf, 0xc0\n\t" // ffreep %%st(0) | 415 ".byte 0xdf, 0xc0\n\t" // ffreep %%st(0) |
416 : | 416 : |
417 :"m"(costab_mmx[30]), "r"(b1), "r"(b2), "r"(out0), "r"(out1) | 417 :"m"(costab_mmx[30]), "r"(b1), "r"(b2), "r"(out0), "r"(out1) |
418 :"memory" | 418 :"memory" |
419 ); | 419 ); |