; in memory) must use an address mode that does fit.
; So all accesses to global variables must use this macro, e.g.
; mov eax, [foo GLOBAL]
-; instead of
+; instead of
; mov eax, [foo]
;
; x86_32 doesn't require PIC.
; PROLOGUE can also be invoked by adding the same options to cglobal
; e.g.
-; cglobal foo, 2,3, dst, src, tmp
+; cglobal foo, 2,3,0, dst, src, tmp
; declares a function (foo), taking two args (dst and src) and one local variable (tmp)
; TODO Some functions can use some args directly from the stack. If they're the
%ifdef PREFIX
%xdefine %1 _ %+ %1
%endif
+ %xdefine %1.skip_prologue %1 %+ .skip_prologue
%ifidn __OUTPUT_FORMAT__,elf
global %1:function hidden
%else
%endmacro
;Substitutions that reduce instruction size but are functionally equivalent
-%define movdqa movaps
-%define movdqu movups
-
%macro add 2
%ifnum %2
%if %2==128