From 1c1be6980d6a7426f771b0721d669918709be58c Mon Sep 17 00:00:00 2001 From: Christoph Mallon Date: Tue, 22 Sep 2009 17:27:41 +0000 Subject: [PATCH] Handle 8Bit and 16bit locations for DecMem, IncMem, NegMem and NotMem. [r26613] --- ir/be/ia32/ia32_emitter.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/ir/be/ia32/ia32_emitter.c b/ir/be/ia32/ia32_emitter.c index 0c6a908cc..59f31e5df 100644 --- a/ir/be/ia32/ia32_emitter.c +++ b/ir/be/ia32/ia32_emitter.c @@ -2634,7 +2634,10 @@ static void bemit_unop_reg(const ir_node *node, unsigned char code, int input) static void bemit_unop_mem(const ir_node *node, unsigned char code, unsigned char ext) { - bemit8(code); + unsigned size = get_mode_size_bits(get_ia32_ls_mode(node)); + if (size == 16) + bemit8(0x66); + bemit8(size == 8 ? code : code + 1); bemit_mod_am(ext, node); } @@ -2906,10 +2909,10 @@ static void bemit_##op(const ir_node *node) \ bemit_unop_mem(node, code, ext); \ } -UNOPMEM(notmem, 0xF7, 2) -UNOPMEM(negmem, 0xF7, 3) -UNOPMEM(incmem, 0xFF, 0) -UNOPMEM(decmem, 0xFF, 1) +UNOPMEM(notmem, 0xF6, 2) +UNOPMEM(negmem, 0xF6, 3) +UNOPMEM(incmem, 0xFE, 0) +UNOPMEM(decmem, 0xFE, 1) static void bemit_set(const ir_node *node) { -- 2.20.1