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 );