ALIGNTEXT16
GLOBL GLNAME( TAG(_mesa_mmx_blend) )
GLNAME( TAG(_mesa_mmx_blend) ):
PUSH_L ( EBP )
MOV_L ( ESP, EBP )
PUSH_L ( ESI )
PUSH_L ( EDI )
PUSH_L ( EBX )
MOV_L ( REGOFF(12, EBP), ECX )
CMP_L ( CONST(0), ECX)
JE ( LLTAG(GMB_return) )
MOV_L ( REGOFF(16, EBP), EBX )
MOV_L ( REGOFF(20, EBP), EDI )
MOV_L ( REGOFF(24, EBP), ESI )
INIT
TEST_L ( CONST(4), EDI )
JZ ( LLTAG(GMB_align_end) )
CMP_B ( CONST(0), REGIND(EBX) )
JE ( LLTAG(GMB_align_continue) )
#define ONE(x) x
#define TWO(x)
MAIN ( EDI, ESI )
#undef ONE
#undef TWO
LLTAG(GMB_align_continue):
DEC_L ( ECX )
INC_L ( EBX )
ADD_L ( CONST(4), EDI )
ADD_L ( CONST(4), ESI )
LLTAG(GMB_align_end):
CMP_L ( CONST(2), ECX)
JB ( LLTAG(GMB_loop_end) )
ALIGNTEXT16
LLTAG(GMB_loop_begin):
CMP_W ( CONST(0), REGIND(EBX) )
JE ( LLTAG(GMB_loop_continue) )
#define ONE(x)
#define TWO(x) x
MAIN ( EDI, ESI )
#undef ONE
#undef TWO
LLTAG(GMB_loop_continue):
DEC_L ( ECX )
DEC_L ( ECX )
ADD_L ( CONST(2), EBX )
ADD_L ( CONST(8), EDI )
ADD_L ( CONST(8), ESI )
CMP_L ( CONST(2), ECX )
JAE ( LLTAG(GMB_loop_begin) )
LLTAG(GMB_loop_end):
CMP_L ( CONST(1), ECX )
JB ( LLTAG(GMB_done) )
CMP_B ( CONST(0), REGIND(EBX) )
JE ( LLTAG(GMB_done) )
#define ONE(x) x
#define TWO(x)
MAIN ( EDI, ESI )
#undef ONE
#undef TWO
LLTAG(GMB_done):
EMMS
LLTAG(GMB_return):
POP_L ( EBX )
POP_L ( EDI )
POP_L ( ESI )
MOV_L ( EBP, ESP )
POP_L ( EBP )
RET
#undef TAG
#undef LLTAG
#undef INIT
#undef MAIN