# 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;
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