Moved ProviderCollectionTest.cs from System assembly to System.Configuration.
[mono.git] / mono / mini / inssel-long.brg
index ac96c77602647f29e57577e0ce44c1ede856b369..1df97f945ae8434624dcdac2371e4d7be9e7cb0e 100644 (file)
@@ -111,7 +111,7 @@ reg: OP_LSUB_OVF_UN (reg, reg) {
        MONO_EMIT_NEW_COND_EXC (s, C, "OverflowException");
 }
 
-reg: OP_LONG_SHRUN_32 (reg) {
+reg: OP_LSHR_UN_32 (reg) {
        MONO_EMIT_BIALU_IMM (s, tree, OP_LSHR_UN_IMM, state->reg1, state->left->reg1, 32);
 }
 
@@ -228,107 +228,90 @@ reg: OP_LCONV_TO_U2 (reg) {
 }
 
 reg: OP_LCONV_TO_OVF_I1 (reg) {
-       MONO_EMIT_NEW_COMPARE_IMM (s, state->left->reg1, 127);
-       MONO_EMIT_NEW_COND_EXC (s, GT, "OverflowException");
-       MONO_EMIT_NEW_COMPARE_IMM (s, state->left->reg1, -128);
-       MONO_EMIT_NEW_COND_EXC (s, LT, "OverflowException");
+       MONO_EMIT_NEW_COMPARE_IMM_EXC (s, GT, state->left->reg1, 127, "OverflowException");
+       MONO_EMIT_NEW_COMPARE_IMM_EXC (s, LT, state->left->reg1, -128, "OverflowException");
        MONO_EMIT_UNALU (s, tree, CEE_CONV_I1, state->reg1, state->left->reg1);
 }
 
 reg: OP_LCONV_TO_OVF_I1_UN (reg) {
-       MONO_EMIT_NEW_COMPARE_IMM (s, state->left->reg1, 127);
-       MONO_EMIT_NEW_COND_EXC (s, GT_UN, "OverflowException");
+       MONO_EMIT_NEW_COMPARE_IMM_EXC (s, GT_UN, state->left->reg1, 127, "OverflowException");
        MONO_EMIT_UNALU (s, tree, CEE_CONV_I1, state->reg1, state->left->reg1);
 }
 
 reg: OP_LCONV_TO_OVF_U1 (reg) {
        /* probe value to be within 0 to 255 */
-       MONO_EMIT_NEW_COMPARE_IMM (s, state->left->reg1, 255);
-       MONO_EMIT_NEW_COND_EXC (s, GT_UN, "OverflowException");
+       MONO_EMIT_NEW_COMPARE_IMM_EXC (s, GT_UN, state->left->reg1, 255, "OverflowException");
        MONO_EMIT_BIALU_IMM (s, tree, OP_AND_IMM, state->reg1, state->left->reg1, 0xff);
 }
 
 reg: OP_LCONV_TO_OVF_U1_UN (reg) {
        /* probe value to be within 0 to 255 */
-       MONO_EMIT_NEW_COMPARE_IMM (s, state->left->reg1, 255);
-       MONO_EMIT_NEW_COND_EXC (s, GT_UN, "OverflowException");
+       MONO_EMIT_NEW_COMPARE_IMM_EXC (s, GT_UN, state->left->reg1, 255, "OverflowException");
        MONO_EMIT_BIALU_IMM (s, tree, OP_AND_IMM, state->reg1, state->left->reg1, 0xff);
 }
 
 reg: OP_LCONV_TO_OVF_I2 (reg) {
        /* Probe value to be within -32768 and 32767 */
-       MONO_EMIT_NEW_COMPARE_IMM (s, state->left->reg1, 32767);
-       MONO_EMIT_NEW_COND_EXC (s, GT, "OverflowException");
-       MONO_EMIT_NEW_COMPARE_IMM (s, state->left->reg1, -32768);
-       MONO_EMIT_NEW_COND_EXC (s, LT, "OverflowException");
+       MONO_EMIT_NEW_COMPARE_IMM_EXC (s, GT, state->left->reg1, 32767, "OverflowException");
+       MONO_EMIT_NEW_COMPARE_IMM_EXC (s, LT, state->left->reg1, -32768, "OverflowException");
        MONO_EMIT_UNALU (s, tree, CEE_CONV_I2, state->reg1, state->left->reg1);
 }
 
 reg: OP_LCONV_TO_OVF_I2_UN (reg) {
        /* Probe value to be within 0 and 32767 */
-       MONO_EMIT_NEW_COMPARE_IMM (s, state->left->reg1, 32767);
-       MONO_EMIT_NEW_COND_EXC (s, GT_UN, "OverflowException");
+       MONO_EMIT_NEW_COMPARE_IMM_EXC (s, GT_UN, state->left->reg1, 32767, "OverflowException");
        MONO_EMIT_UNALU (s, tree, CEE_CONV_I2, state->reg1, state->left->reg1);
 }
 
 reg: OP_LCONV_TO_OVF_U2 (reg) {
        /* Probe value to be within 0 and 65535 */
-       MONO_EMIT_NEW_COMPARE_IMM (s, state->left->reg1, 0xffff);
-       MONO_EMIT_NEW_COND_EXC (s, GT_UN, "OverflowException");
+       MONO_EMIT_NEW_COMPARE_IMM_EXC (s, GT_UN, state->left->reg1, 0xffff, "OverflowException");
        MONO_EMIT_BIALU_IMM (s, tree, OP_AND_IMM, state->reg1, state->left->reg1, 0xffff);
 }
 
 reg: OP_LCONV_TO_OVF_U2_UN (reg) {
        /* Probe value to be within 0 and 65535 */
-       MONO_EMIT_NEW_COMPARE_IMM (s, state->left->reg1, 0xffff);
-       MONO_EMIT_NEW_COND_EXC (s, GT_UN, "OverflowException");
+       MONO_EMIT_NEW_COMPARE_IMM_EXC (s, GT_UN, state->left->reg1, 0xffff, "OverflowException");
        MONO_EMIT_BIALU_IMM (s, tree, OP_AND_IMM, state->reg1, state->left->reg1, 0xffff);
 }
 
 reg: OP_LCONV_TO_OVF_I4 (reg) {
-       MONO_EMIT_NEW_COMPARE_IMM (s, state->left->reg1, 0x7fffffff);
-       MONO_EMIT_NEW_COND_EXC (s, GT, "OverflowException");
-       MONO_EMIT_NEW_COMPARE_IMM (s, state->left->reg1, -2147483648);
-       MONO_EMIT_NEW_COND_EXC (s, LT, "OverflowException");
+       /* The int cast is needed for the VS compiler.  See Compiler Warning (level 2) C4146. */
+       MONO_EMIT_NEW_COMPARE_IMM_EXC (s, GT, state->left->reg1, 0x7fffffff, "OverflowException");
+       MONO_EMIT_NEW_COMPARE_IMM_EXC (s, LT, state->left->reg1, ((int)-2147483648), "OverflowException");
        MONO_EMIT_UNALU (s, tree, OP_MOVE, state->reg1, state->left->reg1);
 }
 
 reg: OP_LCONV_TO_OVF_I4_UN (reg) {
-       MONO_EMIT_NEW_COMPARE_IMM (s, state->left->reg1, 0x7fffffff);
-       MONO_EMIT_NEW_COND_EXC (s, GT_UN, "OverflowException");
+       MONO_EMIT_NEW_COMPARE_IMM_EXC (s, GT_UN, state->left->reg1, 0x7fffffff, "OverflowException");
        MONO_EMIT_UNALU (s, tree, OP_MOVE, state->reg1, state->left->reg1);
 }
 
 reg: OP_LCONV_TO_OVF_U4 (reg) {
-       MONO_EMIT_NEW_COMPARE_IMM (s, state->left->reg1, 0xffffffffUL);
-       MONO_EMIT_NEW_COND_EXC (s, GT, "OverflowException");
-       MONO_EMIT_NEW_BIALU_IMM (s, OP_COMPARE_IMM, -1, state->left->reg1, 0);
-       MONO_EMIT_NEW_COND_EXC (s, LT, "OverflowException");
+       MONO_EMIT_NEW_COMPARE_IMM_EXC (s, GT, state->left->reg1, 0xffffffffUL, "OverflowException");
+       MONO_EMIT_NEW_COMPARE_IMM_EXC (s, LT, state->left->reg1, 0, "OverflowException");
        MONO_EMIT_UNALU (s, tree, OP_MOVE, state->reg1, state->left->reg1);
 }
 
 reg: OP_LCONV_TO_OVF_U4_UN (reg) {
-       MONO_EMIT_NEW_COMPARE_IMM (s, state->left->reg1, 0xffffffff);
-       MONO_EMIT_NEW_COND_EXC (s, GT_UN, "OverflowException");
+       MONO_EMIT_NEW_COMPARE_IMM_EXC (s, GT_UN, state->left->reg1, 0xffffffff, "OverflowException");
        MONO_EMIT_UNALU (s, tree, OP_MOVE, state->reg1, state->left->reg1);
 }
 
 reg: OP_LCONV_TO_OVF_I_UN (reg),
 reg: OP_LCONV_TO_OVF_I8_UN (reg) {
-       MONO_EMIT_NEW_BIALU_IMM (s, OP_COMPARE_IMM, -1, state->left->reg1, 0);
-       MONO_EMIT_NEW_COND_EXC (s, LT, "OverflowException");
-
+       MONO_EMIT_NEW_COMPARE_IMM_EXC (s, LT, state->left->reg1, 0, "OverflowException");
        MONO_EMIT_UNALU (s, tree, OP_MOVE, state->reg1, state->left->reg1);
 }
 
-reg: OP_LCONV_TO_OVF_U8 (reg) {
-       MONO_EMIT_NEW_BIALU_IMM (s, OP_COMPARE_IMM, -1, state->left->reg1, 0);
-       MONO_EMIT_NEW_COND_EXC (s, LT, "OverflowException");
-
+reg: OP_LCONV_TO_OVF_U8 (reg),
+reg: OP_LCONV_TO_OVF_U (reg) {
+       MONO_EMIT_NEW_COMPARE_IMM_EXC (s, LT, state->left->reg1, 0, "OverflowException");
        MONO_EMIT_UNALU (s, tree, OP_MOVE, state->reg1, state->left->reg1);
 }
 
-reg: OP_LCONV_TO_OVF_I8 (reg) {
+reg: OP_LCONV_TO_OVF_I8 (reg),
+reg: OP_LCONV_TO_OVF_U_UN (reg) {
        MONO_EMIT_UNALU (s, tree, OP_MOVE, state->reg1, state->left->reg1);
 }
 
@@ -344,21 +327,24 @@ freg: OP_LCONV_TO_R_UN (lreg) {
        MONO_EMIT_UNALU (s, tree, tree->opcode, state->reg1, state->left->reg1);
 }
 
-reg: CEE_CONV_OVF_I8 (reg) {
+reg: CEE_CONV_OVF_I8 (reg),
+reg: CEE_CONV_OVF_I (reg) {
        /* Sign extend the value in the lower word into the upper word */
        MONO_EMIT_UNALU (s, tree, CEE_CONV_I8, state->reg1, state->left->reg1);
 }
 
 reg: CEE_CONV_OVF_I8_UN (reg),
-reg: CEE_CONV_OVF_U8_UN (reg) {
+reg: CEE_CONV_OVF_U8_UN (reg),
+reg: CEE_CONV_OVF_I_UN (reg),
+reg: CEE_CONV_OVF_U_UN (reg) {
        /* an unsigned 32 bit num always fits in an (un)signed 64 bit one */
        /* Clean out the upper word */
        MONO_EMIT_UNALU (s, tree, CEE_CONV_U8, state->reg1, state->left->reg1);
 }
 
-reg: CEE_CONV_OVF_U8 (reg) {
-       MONO_EMIT_NEW_COMPARE_IMM (s, state->left->reg1, 0);
-       MONO_EMIT_NEW_COND_EXC (s, LT, "OverflowException");
+reg: CEE_CONV_OVF_U8 (reg),
+reg: CEE_CONV_OVF_U (reg) {
+       MONO_EMIT_NEW_COMPARE_IMM_EXC (s, LT, state->left->reg1, 0, "OverflowException");
        MONO_EMIT_UNALU (s, tree, OP_MOVE, state->reg1, state->left->reg1);
 }
 
@@ -366,26 +352,45 @@ reg: OP_LCALLVIRT (reg) {
        mini_emit_virtual_call (s, state, tree, OP_LCALL, OP_LCALL_MEMBASE);
 }
 
+reg: OP_LCALLVIRT_IMT (reg, reg) {
+       tree->opcode = OP_LCALLVIRT;
+       mini_emit_virtual_imt_call (s, state, tree, OP_LCALL, OP_LCALL_MEMBASE, state->right->reg1);
+}
+
 reg: OP_LCALL {
        tree->dreg = state->reg1;
        mono_bblock_add_inst (s->cbb, tree);
 }
 
+reg: OP_LCALL_RGCTX (reg) {
+       emit_rgctx_argument (s, tree, state->left->reg1, OP_LCALL);
+
+       tree->dreg = state->reg1;
+       mono_bblock_add_inst (s->cbb, tree);
+}
+
 reg: OP_LCALL_REG (reg) {
        tree->sreg1 = state->left->reg1;
        tree->dreg = state->reg1;
        mono_bblock_add_inst (s->cbb, tree);
 }
 
-reg: OP_LCALL_REG (OP_ICONST) {
+reg: OP_LCALL_REG_RGCTX (reg, reg) {
+       emit_rgctx_argument (s, tree, state->right->reg1, OP_LCALL_REG);
+
+       tree->sreg1 = state->left->reg1;
+       tree->dreg = state->reg1;
+       mono_bblock_add_inst (s->cbb, tree);
+}
+
+reg: OP_LCALL_REG (OP_ICONST),
+reg: OP_LCALL_REG (OP_I8CONST) {
        tree->opcode = OP_LCALL;
        ((MonoCallInst*)tree)->fptr = state->left->tree->inst_p0;
        tree->dreg = state->reg1;
        mono_bblock_add_inst (s->cbb, tree);
 }
 
-
-
 stmt: CEE_STIND_I4 (OP_REGVAR, OP_ICONST) {
        tree->inst_c0 = state->right->tree->inst_c0;
        tree->opcode = OP_ICONST;