From 01e6da8d4848ef084e31aa79d807647b2857934e Mon Sep 17 00:00:00 2001 From: Christoph Mallon Date: Sun, 11 Nov 2012 22:41:58 +0100 Subject: [PATCH] Implement binary emitters for ia32 bsf and bsr. --- ir/be/ia32/ia32_emitter.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/ir/be/ia32/ia32_emitter.c b/ir/be/ia32/ia32_emitter.c index 41ae1e7c2..01b619ec6 100644 --- a/ir/be/ia32/ia32_emitter.c +++ b/ir/be/ia32/ia32_emitter.c @@ -2496,6 +2496,16 @@ static void bemit_setcc(const ir_node *node) } } +static void bemit_bsf(ir_node const *const node) +{ + bemit_0f_unop_reg(node, 0xBC, n_ia32_Bsf_operand); +} + +static void bemit_bsr(ir_node const *const node) +{ + bemit_0f_unop_reg(node, 0xBD, n_ia32_Bsr_operand); +} + static void bemit_cmovcc(const ir_node *node) { const ia32_attr_t *attr = get_ia32_attr_const(node); @@ -3572,6 +3582,8 @@ static void ia32_register_binary_emitters(void) register_emitter(op_ia32_AndMem, bemit_andmem); register_emitter(op_ia32_AndMem8Bit, bemit_andmem8bit); register_emitter(op_ia32_Breakpoint, bemit_int3); + register_emitter(op_ia32_Bsf, bemit_bsf); + register_emitter(op_ia32_Bsr, bemit_bsr); register_emitter(op_ia32_CMovcc, bemit_cmovcc); register_emitter(op_ia32_Call, bemit_call); register_emitter(op_ia32_Cltd, bemit_cltd); -- 2.20.1