Erik de Castro Lopo wrote: > Googling suggests that use of restrict is a little controvertial.
Maybe, but Opus encoder uses this keyword in its en-/decoding routines. So I think it's not dangerous. > Also, do you have any idea why this causes such a slow down in VS10 and > VS12? Without __restrict, VS12 generates the following pattern: ... mov eax, DWORD PTR [edi+32] adc esi, edx imul DWORD PTR [ebx+8] add ecx, eax ...etc... With __restrict: ... mov eax, DWORD PTR [ecx+16] cdq mov DWORD PTR tv7279[esp+116], eax mov DWORD PTR tv7278[esp+116], edx ...etc... followed by ... push DWORD PTR tv7278[esp+116] mov eax, DWORD PTR [ebx+24] push DWORD PTR tv7279[esp+120] adc edi, edx cdq push edx push eax call __allmul add esi, eax ...etc... I have no idea why it does this. Maybe it tries to "optimize" 32bit * 32bit -> 64bit multiplication? _______________________________________________ flac-dev mailing list flac-dev@xiph.org http://lists.xiph.org/mailman/listinfo/flac-dev