ami_stuff wrote: >> Yes, but you must be careful. These macros will be interpreted differently >> depending on whether their arguments are signed or unsigned, so you must >> ensure their assembly replacements are appropriate. > > Sorry to bother you again, but maybe you can try to create repleacements for C > functions with use of umul_ppmm code? I'm afraid I'm not so skilled and only one > mistake - you get noise or no sound in the output file. :P > It looks for me that mp3 decoder uses only signed arguments. > > I will re-done the benchmark on the 68060 with all functions asm optimized. > > BTW. I compared the output wav files from original version and inlined of FFmpeg > and everything is ok - files are identical. My guess: inline int64_t MUL64(int a, int b) { uint32_t au = a; uint32_t bu = b; uint32_t resh, resl; uint64_t res; umul_ppmm(resh, resl, au, bu); if (a < 0) resh -= bu; if (b < 0) resh -= au; res = ((uint64_t)resh << 32) | resl; return res; } #define MULL(a,b,s) \ (MUL64(a, b) >> s) #ifndef MAC64 # define MAC64(d, a, b) ((d) += MUL64(a, b)) #endif #ifndef MLS64 # define MLS64(d, a, b) ((d) -= MUL64(a, b)) #endif