/*
* check and set for backwards
- * should we look closer for overlap?
*/
CMPL SI, DI
JLS back
/*
* forward copy loop
*/
+forward:
MOVL BX, CX
SHRL $2, CX
ANDL $3, BX
MOVL to+0(FP),AX
RET
+/*
+ * check overlap
+ */
+back:
+ MOVL SI, CX
+ ADDL BX, CX
+ CMPL CX, DI
+ JLS forward
/*
* whole thing backwards has
* adjusted addresses
*/
-back:
+
ADDL BX, DI
ADDL BX, SI
STD
/*
* check and set for backwards
- * should we look closer for overlap?
*/
CMPQ SI, DI
JLS back
/*
* forward copy loop
*/
+forward:
MOVQ BX, CX
SHRQ $3, CX
ANDQ $7, BX
MOVQ to+0(FP),AX
RET
+back:
+/*
+ * check overlap
+ */
+ MOVQ SI, CX
+ ADDQ BX, CX
+ CMPQ CX, DI
+ JLS forward
+
/*
* whole thing backwards has
* adjusted addresses
*/
-back:
ADDQ BX, DI
ADDQ BX, SI
STD