// generated by wbfat_gen.go; use go generate

package runtime

//go:nosplit
func writebarrierfat01(dst *[2]uintptr, _ *byte, src [2]uintptr) {
	dst[0] = src[0]
	writebarrierptr(&dst[1], src[1])
}

//go:nosplit
func writebarrierfat10(dst *[2]uintptr, _ *byte, src [2]uintptr) {
	writebarrierptr(&dst[0], src[0])
	dst[1] = src[1]
}

//go:nosplit
func writebarrierfat11(dst *[2]uintptr, _ *byte, src [2]uintptr) {
	writebarrierptr(&dst[0], src[0])
	writebarrierptr(&dst[1], src[1])
}

//go:nosplit
func writebarrierfat001(dst *[3]uintptr, _ *byte, src [3]uintptr) {
	dst[0] = src[0]
	dst[1] = src[1]
	writebarrierptr(&dst[2], src[2])
}

//go:nosplit
func writebarrierfat010(dst *[3]uintptr, _ *byte, src [3]uintptr) {
	dst[0] = src[0]
	writebarrierptr(&dst[1], src[1])
	dst[2] = src[2]
}

//go:nosplit
func writebarrierfat011(dst *[3]uintptr, _ *byte, src [3]uintptr) {
	dst[0] = src[0]
	writebarrierptr(&dst[1], src[1])
	writebarrierptr(&dst[2], src[2])
}

//go:nosplit
func writebarrierfat100(dst *[3]uintptr, _ *byte, src [3]uintptr) {
	writebarrierptr(&dst[0], src[0])
	dst[1] = src[1]
	dst[2] = src[2]
}

//go:nosplit
func writebarrierfat101(dst *[3]uintptr, _ *byte, src [3]uintptr) {
	writebarrierptr(&dst[0], src[0])
	dst[1] = src[1]
	writebarrierptr(&dst[2], src[2])
}

//go:nosplit
func writebarrierfat110(dst *[3]uintptr, _ *byte, src [3]uintptr) {
	writebarrierptr(&dst[0], src[0])
	writebarrierptr(&dst[1], src[1])
	dst[2] = src[2]
}

//go:nosplit
func writebarrierfat111(dst *[3]uintptr, _ *byte, src [3]uintptr) {
	writebarrierptr(&dst[0], src[0])
	writebarrierptr(&dst[1], src[1])
	writebarrierptr(&dst[2], src[2])
}

//go:nosplit
func writebarrierfat0001(dst *[4]uintptr, _ *byte, src [4]uintptr) {
	dst[0] = src[0]
	dst[1] = src[1]
	dst[2] = src[2]
	writebarrierptr(&dst[3], src[3])
}

//go:nosplit
func writebarrierfat0010(dst *[4]uintptr, _ *byte, src [4]uintptr) {
	dst[0] = src[0]
	dst[1] = src[1]
	writebarrierptr(&dst[2], src[2])
	dst[3] = src[3]
}

//go:nosplit
func writebarrierfat0011(dst *[4]uintptr, _ *byte, src [4]uintptr) {
	dst[0] = src[0]
	dst[1] = src[1]
	writebarrierptr(&dst[2], src[2])
	writebarrierptr(&dst[3], src[3])
}

//go:nosplit
func writebarrierfat0100(dst *[4]uintptr, _ *byte, src [4]uintptr) {
	dst[0] = src[0]
	writebarrierptr(&dst[1], src[1])
	dst[2] = src[2]
	dst[3] = src[3]
}

//go:nosplit
func writebarrierfat0101(dst *[4]uintptr, _ *byte, src [4]uintptr) {
	dst[0] = src[0]
	writebarrierptr(&dst[1], src[1])
	dst[2] = src[2]
	writebarrierptr(&dst[3], src[3])
}

//go:nosplit
func writebarrierfat0110(dst *[4]uintptr, _ *byte, src [4]uintptr) {
	dst[0] = src[0]
	writebarrierptr(&dst[1], src[1])
	writebarrierptr(&dst[2], src[2])
	dst[3] = src[3]
}

//go:nosplit
func writebarrierfat0111(dst *[4]uintptr, _ *byte, src [4]uintptr) {
	dst[0] = src[0]
	writebarrierptr(&dst[1], src[1])
	writebarrierptr(&dst[2], src[2])
	writebarrierptr(&dst[3], src[3])
}

//go:nosplit
func writebarrierfat1000(dst *[4]uintptr, _ *byte, src [4]uintptr) {
	writebarrierptr(&dst[0], src[0])
	dst[1] = src[1]
	dst[2] = src[2]
	dst[3] = src[3]
}

//go:nosplit
func writebarrierfat1001(dst *[4]uintptr, _ *byte, src [4]uintptr) {
	writebarrierptr(&dst[0], src[0])
	dst[1] = src[1]
	dst[2] = src[2]
	writebarrierptr(&dst[3], src[3])
}

//go:nosplit
func writebarrierfat1010(dst *[4]uintptr, _ *byte, src [4]uintptr) {
	writebarrierptr(&dst[0], src[0])
	dst[1] = src[1]
	writebarrierptr(&dst[2], src[2])
	dst[3] = src[3]
}

//go:nosplit
func writebarrierfat1011(dst *[4]uintptr, _ *byte, src [4]uintptr) {
	writebarrierptr(&dst[0], src[0])
	dst[1] = src[1]
	writebarrierptr(&dst[2], src[2])
	writebarrierptr(&dst[3], src[3])
}

//go:nosplit
func writebarrierfat1100(dst *[4]uintptr, _ *byte, src [4]uintptr) {
	writebarrierptr(&dst[0], src[0])
	writebarrierptr(&dst[1], src[1])
	dst[2] = src[2]
	dst[3] = src[3]
}

//go:nosplit
func writebarrierfat1101(dst *[4]uintptr, _ *byte, src [4]uintptr) {
	writebarrierptr(&dst[0], src[0])
	writebarrierptr(&dst[1], src[1])
	dst[2] = src[2]
	writebarrierptr(&dst[3], src[3])
}

//go:nosplit
func writebarrierfat1110(dst *[4]uintptr, _ *byte, src [4]uintptr) {
	writebarrierptr(&dst[0], src[0])
	writebarrierptr(&dst[1], src[1])
	writebarrierptr(&dst[2], src[2])
	dst[3] = src[3]
}

//go:nosplit
func writebarrierfat1111(dst *[4]uintptr, _ *byte, src [4]uintptr) {
	writebarrierptr(&dst[0], src[0])
	writebarrierptr(&dst[1], src[1])
	writebarrierptr(&dst[2], src[2])
	writebarrierptr(&dst[3], src[3])
}
