Skip to content

Instantly share code, notes, and snippets.

@alpinistbg
Created January 5, 2023 09:03
Show Gist options
  • Save alpinistbg/f69313cdd6a7f4a735213e4a4b215c8f to your computer and use it in GitHub Desktop.
Save alpinistbg/f69313cdd6a7f4a735213e4a4b215c8f to your computer and use it in GitHub Desktop.
Duff's device
void duff_copy(char *to, char *from, int count) {
int n = (count + 7) / 8;
switch (count % 8) {
case 0: do { *to++ = *from++;
case 7: *to++ = *from++;
case 6: *to++ = *from++;
case 5: *to++ = *from++;
case 4: *to++ = *from++;
case 3: *to++ = *from++;
case 2: *to++ = *from++;
case 1: *to++ = *from++;
} while (--n > 0);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment