comparison ps2/idct_mmi.c @ 8031:eebc7209c47f libavcodec

Convert asm keyword into __asm__. Neither the asm() nor the __asm__() keyword is part of the C99 standard, but while GCC accepts the former in C89 syntax, it is not accepted in C99 unless GNU extensions are turned on (with -fasm). The latter form is accepted in any syntax as an extension (without requiring further command-line options). Sun Studio C99 compiler also does not accept asm() while accepting __asm__(), albeit reporting warnings that it's not valid C99 syntax.
author flameeyes
date Thu, 16 Oct 2008 13:34:09 +0000
parents f7cbb7733146
children
comparison
equal deleted inserted replaced
8030:a512ac8fa540 8031:eebc7209c47f
255 #define PUT(rs) \ 255 #define PUT(rs) \
256 pminh(rs, $11, $2); \ 256 pminh(rs, $11, $2); \
257 pmaxh($2, $0, $2); \ 257 pmaxh($2, $0, $2); \
258 ppacb($0, $2, $2); \ 258 ppacb($0, $2, $2); \
259 sd3(2, 0, 4); \ 259 sd3(2, 0, 4); \
260 asm volatile ("add $4, $5, $4"); 260 __asm__ volatile ("add $4, $5, $4");
261 261
262 #define DCT_8_INV_COL8_PUT() \ 262 #define DCT_8_INV_COL8_PUT() \
263 PUT($16); \ 263 PUT($16); \
264 PUT($17); \ 264 PUT($17); \
265 PUT($18); \ 265 PUT($18); \
275 paddh($2, rs, $2); \ 275 paddh($2, rs, $2); \
276 pminh($2, $11, $2); \ 276 pminh($2, $11, $2); \
277 pmaxh($2, $0, $2); \ 277 pmaxh($2, $0, $2); \
278 ppacb($0, $2, $2); \ 278 ppacb($0, $2, $2); \
279 sd3(2, 0, 4); \ 279 sd3(2, 0, 4); \
280 asm volatile ("add $4, $5, $4"); 280 __asm__ volatile ("add $4, $5, $4");
281 281
282 /*fixme: schedule*/ 282 /*fixme: schedule*/
283 #define DCT_8_INV_COL8_ADD() \ 283 #define DCT_8_INV_COL8_ADD() \
284 ADD($16); \ 284 ADD($16); \
285 ADD($17); \ 285 ADD($17); \
292 292
293 293
294 void ff_mmi_idct(int16_t * block) 294 void ff_mmi_idct(int16_t * block)
295 { 295 {
296 /* $4 = block */ 296 /* $4 = block */
297 asm volatile("la $24, %0"::"m"(consttable[0])); 297 __asm__ volatile("la $24, %0"::"m"(consttable[0]));
298 lq($24, ROUNDER_0, $8); 298 lq($24, ROUNDER_0, $8);
299 lq($24, ROUNDER_1, $7); 299 lq($24, ROUNDER_1, $7);
300 DCT_8_INV_ROW1($4, 0, TAB_i_04, $8, $8); 300 DCT_8_INV_ROW1($4, 0, TAB_i_04, $8, $8);
301 DCT_8_INV_ROW1($4, 16, TAB_i_17, $7, $9); 301 DCT_8_INV_ROW1($4, 16, TAB_i_17, $7, $9);
302 DCT_8_INV_ROW1($4, 32, TAB_i_26, $7, $10); 302 DCT_8_INV_ROW1($4, 32, TAB_i_26, $7, $10);
307 DCT_8_INV_ROW1($4, 112, TAB_i_17, $7, $15); 307 DCT_8_INV_ROW1($4, 112, TAB_i_17, $7, $15);
308 DCT_8_INV_COL8(); 308 DCT_8_INV_COL8();
309 DCT_8_INV_COL8_STORE($4); 309 DCT_8_INV_COL8_STORE($4);
310 310
311 //let savedtemp regs be saved 311 //let savedtemp regs be saved
312 asm volatile(" ":::"$16", "$17", "$18", "$19", "$20", "$21", "$22", "$23"); 312 __asm__ volatile(" ":::"$16", "$17", "$18", "$19", "$20", "$21", "$22", "$23");
313 } 313 }
314 314
315 315
316 void ff_mmi_idct_put(uint8_t *dest, int line_size, DCTELEM *block) 316 void ff_mmi_idct_put(uint8_t *dest, int line_size, DCTELEM *block)
317 { 317 {
318 /* $4 = dest, $5 = line_size, $6 = block */ 318 /* $4 = dest, $5 = line_size, $6 = block */
319 asm volatile("la $24, %0"::"m"(consttable[0])); 319 __asm__ volatile("la $24, %0"::"m"(consttable[0]));
320 lq($24, ROUNDER_0, $8); 320 lq($24, ROUNDER_0, $8);
321 lq($24, ROUNDER_1, $7); 321 lq($24, ROUNDER_1, $7);
322 DCT_8_INV_ROW1($6, 0, TAB_i_04, $8, $8); 322 DCT_8_INV_ROW1($6, 0, TAB_i_04, $8, $8);
323 DCT_8_INV_ROW1($6, 16, TAB_i_17, $7, $9); 323 DCT_8_INV_ROW1($6, 16, TAB_i_17, $7, $9);
324 DCT_8_INV_ROW1($6, 32, TAB_i_26, $7, $10); 324 DCT_8_INV_ROW1($6, 32, TAB_i_26, $7, $10);
331 lq($24, CLIPMAX, $11); 331 lq($24, CLIPMAX, $11);
332 DCT_8_INV_COL8_PMS(); 332 DCT_8_INV_COL8_PMS();
333 DCT_8_INV_COL8_PUT(); 333 DCT_8_INV_COL8_PUT();
334 334
335 //let savedtemp regs be saved 335 //let savedtemp regs be saved
336 asm volatile(" ":::"$16", "$17", "$18", "$19", "$20", "$21", "$22", "$23"); 336 __asm__ volatile(" ":::"$16", "$17", "$18", "$19", "$20", "$21", "$22", "$23");
337 } 337 }
338 338
339 339
340 void ff_mmi_idct_add(uint8_t *dest, int line_size, DCTELEM *block) 340 void ff_mmi_idct_add(uint8_t *dest, int line_size, DCTELEM *block)
341 { 341 {
342 /* $4 = dest, $5 = line_size, $6 = block */ 342 /* $4 = dest, $5 = line_size, $6 = block */
343 asm volatile("la $24, %0"::"m"(consttable[0])); 343 __asm__ volatile("la $24, %0"::"m"(consttable[0]));
344 lq($24, ROUNDER_0, $8); 344 lq($24, ROUNDER_0, $8);
345 lq($24, ROUNDER_1, $7); 345 lq($24, ROUNDER_1, $7);
346 DCT_8_INV_ROW1($6, 0, TAB_i_04, $8, $8); 346 DCT_8_INV_ROW1($6, 0, TAB_i_04, $8, $8);
347 DCT_8_INV_ROW1($6, 16, TAB_i_17, $7, $9); 347 DCT_8_INV_ROW1($6, 16, TAB_i_17, $7, $9);
348 DCT_8_INV_ROW1($6, 32, TAB_i_26, $7, $10); 348 DCT_8_INV_ROW1($6, 32, TAB_i_26, $7, $10);
355 lq($24, CLIPMAX, $11); 355 lq($24, CLIPMAX, $11);
356 DCT_8_INV_COL8_PMS(); 356 DCT_8_INV_COL8_PMS();
357 DCT_8_INV_COL8_ADD(); 357 DCT_8_INV_COL8_ADD();
358 358
359 //let savedtemp regs be saved 359 //let savedtemp regs be saved
360 asm volatile(" ":::"$16", "$17", "$18", "$19", "$20", "$21", "$22", "$23"); 360 __asm__ volatile(" ":::"$16", "$17", "$18", "$19", "$20", "$21", "$22", "$23");
361 } 361 }
362 362