--- /dev/null
+// Code generated by mkduff.go; DO NOT EDIT.
+// Run go generate from src/runtime to update.
+// See mkduff.go for comments.
+
+#include "textflag.h"
+
+TEXT runtime·duffzero(SB), NOSPLIT|NOFRAME, $0-0
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ MOVV R0, 8(R19)
+ ADDV $8, R19
+ RET
+
+TEXT runtime·duffcopy(SB), NOSPLIT|NOFRAME, $0-0
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ MOVV (R19), R30
+ ADDV $8, R19
+ MOVV R30, (R20)
+ ADDV $8, R20
+
+ RET
gen("386", notags, zero386, copy386)
gen("arm", notags, zeroARM, copyARM)
gen("arm64", notags, zeroARM64, copyARM64)
+ gen("loong64", notags, zeroLOONG64, copyLOONG64)
gen("ppc64x", tagsPPC64x, zeroPPC64x, copyPPC64x)
gen("mips64x", tagsMIPS64x, zeroMIPS64x, copyMIPS64x)
gen("riscv64", notags, zeroRISCV64, copyRISCV64)
fmt.Fprintln(w, "\tRET")
}
+func zeroLOONG64(w io.Writer) {
+ // R0: always zero
+ // R19 (aka REGRT1): ptr to memory to be zeroed - 8
+ // On return, R19 points to the last zeroed dword.
+ fmt.Fprintln(w, "TEXT runtime·duffzero(SB), NOSPLIT|NOFRAME, $0-0")
+ for i := 0; i < 128; i++ {
+ fmt.Fprintln(w, "\tMOVV\tR0, 8(R19)")
+ fmt.Fprintln(w, "\tADDV\t$8, R19")
+ }
+ fmt.Fprintln(w, "\tRET")
+}
+
+func copyLOONG64(w io.Writer) {
+ fmt.Fprintln(w, "TEXT runtime·duffcopy(SB), NOSPLIT|NOFRAME, $0-0")
+ for i := 0; i < 128; i++ {
+ fmt.Fprintln(w, "\tMOVV\t(R19), R30")
+ fmt.Fprintln(w, "\tADDV\t$8, R19")
+ fmt.Fprintln(w, "\tMOVV\tR30, (R20)")
+ fmt.Fprintln(w, "\tADDV\t$8, R20")
+ fmt.Fprintln(w)
+ }
+ fmt.Fprintln(w, "\tRET")
+}
+
func tagsPPC64x(w io.Writer) {
fmt.Fprintln(w)
fmt.Fprintln(w, "//go:build ppc64 || ppc64le")