From b644c35fa89324522c70d601a2582a22d66098fb Mon Sep 17 00:00:00 2001 From: Christoph Mallon Date: Wed, 8 Oct 2008 08:54:21 +0000 Subject: [PATCH] Simplify emit_CopyB_prolog() and remove an unnecessary bit filter before calling it. [r22598] --- ir/be/ia32/ia32_emitter.c | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/ir/be/ia32/ia32_emitter.c b/ir/be/ia32/ia32_emitter.c index c4eabd86a..af53e41e3 100644 --- a/ir/be/ia32/ia32_emitter.c +++ b/ir/be/ia32/ia32_emitter.c @@ -1373,21 +1373,13 @@ static void emit_CopyB_prolog(unsigned size) 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; } } @@ -1411,7 +1403,7 @@ static void emit_ia32_CopyB_i(const ir_node *node) { unsigned size = get_ia32_copyb_size(node); - emit_CopyB_prolog(size & 0x3); + emit_CopyB_prolog(size); size >>= 2; while (size--) { -- 2.20.1