be_emit_cstring("\tcld");
be_emit_finish_line_gas(NULL);
- switch (size) {
- case 1:
- be_emit_cstring("\tmovsb");
- be_emit_finish_line_gas(NULL);
- break;
- case 2:
- be_emit_cstring("\tmovsw");
- be_emit_finish_line_gas(NULL);
- break;
- case 3:
+ if (size & 1) {
be_emit_cstring("\tmovsb");
be_emit_finish_line_gas(NULL);
+ }
+ if (size & 2) {
be_emit_cstring("\tmovsw");
be_emit_finish_line_gas(NULL);
- break;
}
}
{
unsigned size = get_ia32_copyb_size(node);
- emit_CopyB_prolog(size & 0x3);
+ emit_CopyB_prolog(size);
size >>= 2;
while (size--) {