From: Christoph Mallon Date: Tue, 22 Sep 2009 19:22:21 +0000 (+0000) Subject: Implement binary emitter for CopyBi. X-Git-Url: http://nsz.repo.hu/git/?a=commitdiff_plain;h=e6f1c46e781ae7a82f8215cb4119fa4ba304a936;p=libfirm Implement binary emitter for CopyBi. [r26618] --- diff --git a/ir/be/ia32/ia32_emitter.c b/ir/be/ia32/ia32_emitter.c index ba8c6983d..1b675dd45 100644 --- a/ir/be/ia32/ia32_emitter.c +++ b/ir/be/ia32/ia32_emitter.c @@ -3273,6 +3273,21 @@ static void bemit_incsp(const ir_node *node) } } +static void bemit_copybi(const ir_node *node) +{ + unsigned size = get_ia32_copyb_size(node); + if (size & 1) + bemit8(0xA4); // movsb + if (size & 2) { + bemit8(0x66); + bemit8(0xA5); // movsw + } + size >>= 2; + while (size--) { + bemit8(0xA5); // movsl + } +} + /** * The type of a emitter function. */ @@ -3313,6 +3328,7 @@ static void ia32_register_binary_emitters(void) register_emitter(op_ia32_Const, bemit_mov_const); register_emitter(op_ia32_Conv_I2I8Bit, bemit_conv_i2i); register_emitter(op_ia32_Conv_I2I, bemit_conv_i2i); + register_emitter(op_ia32_CopyB_i, bemit_copybi); register_emitter(op_ia32_Cwtl, bemit_cwtl); register_emitter(op_ia32_Dec, bemit_dec); register_emitter(op_ia32_DecMem, bemit_decmem);