From 8fbc0db10d5a6e796068f2c8280c445120fecc7e Mon Sep 17 00:00:00 2001 From: Christoph Mallon Date: Tue, 22 Sep 2009 17:20:39 +0000 Subject: [PATCH] Handle 8Bit locations for RolMem, RorMem, SarMem, ShlMem and ShrMem. [r26612] --- ir/be/ia32/ia32_emitter.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/ir/be/ia32/ia32_emitter.c b/ir/be/ia32/ia32_emitter.c index e3bb608fd..0c6a908cc 100644 --- a/ir/be/ia32/ia32_emitter.c +++ b/ir/be/ia32/ia32_emitter.c @@ -2814,21 +2814,22 @@ static void bemit_##op(const ir_node *node) \ \ static void bemit_##op##mem(const ir_node *node) \ { \ - if (get_mode_size_bits(get_ia32_ls_mode(node)) == 16) \ + unsigned size = get_mode_size_bits(get_ia32_ls_mode(node)); \ + if (size == 16) \ bemit8(0x66); \ ir_node *count = get_irn_n(node, 1); \ if (is_ia32_Immediate(count)) { \ int offset = get_ia32_immediate_attr_const(count)->offset; \ if (offset == 1) { \ - bemit8(0xD1); \ + bemit8(size == 1 ? 0xD0 : 0xD1); \ bemit_mod_am(ext, node); \ } else { \ - bemit8(0xC1); \ + bemit8(size == 1 ? 0xC0 : 0xC1); \ bemit_mod_am(ext, node); \ bemit8(offset); \ } \ } else { \ - bemit8(0xD3); \ + bemit8(size == 1 ? 0xD2 : 0xD3); \ bemit_mod_am(ext, node); \ } \ } -- 2.20.1