grammar updates
[mono.git] / mono / mini / inssel-long32.brg
index b27ba0ee8090ffa8d82c6a762e993847046b2be8..a48e2503a02e4af2190bbe5c72619b6ea88160d3 100644 (file)
@@ -74,22 +74,29 @@ stmt: CEE_STIND_I8 (base, i8con) {
                                         state->left->tree->inst_offset, state->right->tree->inst_c0);
 }
 
+lreg: OP_BIGMUL (reg, reg) {
+       MONO_EMIT_NEW_BIALU (s, OP_BIGMUL, state->reg1, state->left->reg1, state->right->reg1); 
+}
+
+lreg: OP_BIGMUL_UN (reg, reg) {
+       MONO_EMIT_NEW_BIALU (s, OP_BIGMUL_UN, state->reg1, state->left->reg1, state->right->reg1); 
+}
 
 lreg: OP_LADD (lreg, lreg) {
-       MONO_EMIT_NEW_BIALU (s, CEE_ADD, state->reg1, state->left->reg1, state->right->reg1);
+       MONO_EMIT_NEW_BIALU (s, OP_ADDCC, state->reg1, state->left->reg1, state->right->reg1);
        MONO_EMIT_BIALU (s, tree, OP_ADC, state->reg2, state->left->reg2, state->right->reg2);
 }
 
 lreg: OP_LADD_OVF (lreg, lreg) {
        /* ADC sets the condition code */
-       MONO_EMIT_NEW_BIALU (s, CEE_ADD, state->reg1, state->left->reg1, state->right->reg1);
+       MONO_EMIT_NEW_BIALU (s, OP_ADDCC, state->reg1, state->left->reg1, state->right->reg1);
        MONO_EMIT_NEW_BIALU (s, OP_ADC, state->reg2, state->left->reg2, state->right->reg2);
        MONO_EMIT_NEW_COND_EXC (s, OV, "OverflowException");
 }
 
 lreg: OP_LADD_OVF_UN (lreg, lreg) {
        /* ADC sets the condition code */
-       MONO_EMIT_NEW_BIALU (s, CEE_ADD, state->reg1, state->left->reg1, state->right->reg1);
+       MONO_EMIT_NEW_BIALU (s, OP_ADDCC, state->reg1, state->left->reg1, state->right->reg1);
        MONO_EMIT_NEW_BIALU (s, OP_ADC, state->reg2, state->left->reg2, state->right->reg2);
        MONO_EMIT_NEW_COND_EXC (s, C, "OverflowException");
 }
@@ -100,7 +107,7 @@ lreg: OP_LADD (lreg, i8con) {
 }
 
 lreg: OP_LSUB (lreg, lreg) {
-       MONO_EMIT_NEW_BIALU (s, CEE_SUB, state->reg1, state->left->reg1, state->right->reg1);
+       MONO_EMIT_NEW_BIALU (s, OP_SUBCC, state->reg1, state->left->reg1, state->right->reg1);
        MONO_EMIT_BIALU (s, tree, OP_SBB, state->reg2, state->left->reg2, state->right->reg2);
 }
 
@@ -111,7 +118,7 @@ lreg: OP_LSUB (lreg, i8con) {
 
 lreg: OP_LSUB_OVF (lreg, lreg) {
        /* SBB sets the condition code */
-       MONO_EMIT_NEW_BIALU (s, CEE_SUB, state->reg1, state->left->reg1, state->right->reg1);
+       MONO_EMIT_NEW_BIALU (s, OP_SUBCC, state->reg1, state->left->reg1, state->right->reg1);
        MONO_EMIT_NEW_BIALU (s, OP_SBB, state->reg2, state->left->reg2, state->right->reg2);
        MONO_EMIT_NEW_COND_EXC (s, OV, "OverflowException");
 }
@@ -474,6 +481,12 @@ lreg: CEE_CONV_OVF_U8 (reg) {
        MONO_EMIT_UNALU (s, tree, OP_MOVE, state->reg1, state->left->reg1);
 }
 
+lreg: CEE_CONV_OVF_I8 (reg) {
+       /* a signed 32 bit num always fits in a signed 64 bit one */
+       MONO_EMIT_NEW_ICONST (s, state->reg2, 0);
+       MONO_EMIT_UNALU (s, tree, OP_MOVE, state->reg1, state->left->reg1);
+}
+
 lreg: CEE_CONV_OVF_I8_UN (reg) {
        /* an unsigned 32 bit num always fits in a signed 64 bit one */
        MONO_EMIT_NEW_ICONST (s, state->reg2, 0);
@@ -640,4 +653,14 @@ lreg: OP_LCONV_TO_OVF_U8 (lreg) {
        MONO_EMIT_UNALU (s, tree, OP_MOVE, state->reg2, state->left->reg2);
 }
 
+lreg: OP_LCONV_TO_OVF_I8 (lreg) {
+       MONO_EMIT_NEW_UNALU (s, OP_MOVE, state->reg1, state->left->reg1);
+       MONO_EMIT_UNALU (s, tree, OP_MOVE, state->reg2, state->left->reg2);
+}
+
+lreg: OP_LCONV_TO_OVF_U8_UN (lreg) {
+       MONO_EMIT_NEW_UNALU (s, OP_MOVE, state->reg1, state->left->reg1);
+       MONO_EMIT_UNALU (s, tree, OP_MOVE, state->reg2, state->left->reg2);
+}
+
 %%