2006-01-03 Zoltan Varga <vargaz@gmail.com>
[mono.git] / mono / mini / inssel-x86.brg
index d7f842f789a9543614d65044ef23a4c6355e5e65..44939553877b4b37c507382fd3c088faac11face 100644 (file)
@@ -747,7 +747,7 @@ reg: OP_ATOMIC_EXCHANGE_I4 (base, reg) {
 # Optimized call instructions
 # mono_arch_patch_delegate_trampoline depends on these
 reg: OP_CALL_REG (CEE_LDIND_I (base)),
-reg: OP_FCALL_REG (CEE_LDIND_I (base)),
+freg: OP_FCALL_REG (CEE_LDIND_I (base)),
 reg: OP_LCALL_REG (CEE_LDIND_I (base)) {
        tree->opcode = call_reg_to_call_membase (tree->opcode);
        tree->inst_basereg = state->left->left->tree->inst_basereg;
@@ -781,6 +781,15 @@ stmt: OP_VCALL_REG (CEE_LDIND_I (base), reg) {
        mono_bblock_add_inst (s->cbb, tree);
 }
 
+# Optimized ldind(reg) rules
+reg: CEE_LDIND_REF (OP_REGVAR),
+reg: CEE_LDIND_I (OP_REGVAR),
+reg: CEE_LDIND_I4 (OP_REGVAR),
+reg: CEE_LDIND_U4 (OP_REGVAR) "0" {
+       state->reg1 = state->left->tree->dreg;
+       tree->dreg = state->reg1;
+}
+
 %%
 
 int