Author: zoltan
Date: 2008-02-07 12:56:54 -0500 (Thu, 07 Feb 2008)
New Revision: 95170

Modified:
   trunk/mono/mono/mini/ChangeLog
   trunk/mono/mono/mini/cpu-sparc.md
   trunk/mono/mono/mini/mini-sparc.c
   trunk/mono/mono/mini/mini-sparc.h
Log:
2008-02-07  Zoltan Varga  <[EMAIL PROTECTED]>

        * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.


Modified: trunk/mono/mono/mini/ChangeLog
===================================================================
--- trunk/mono/mono/mini/ChangeLog      2008-02-07 17:47:50 UTC (rev 95169)
+++ trunk/mono/mono/mini/ChangeLog      2008-02-07 17:56:54 UTC (rev 95170)
@@ -1,5 +1,7 @@
 2008-02-07  Zoltan Varga  <[EMAIL PROTECTED]>
 
+       * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
+
        * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
 
        * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead 
make 

Modified: trunk/mono/mono/mini/cpu-sparc.md
===================================================================
--- trunk/mono/mono/mini/cpu-sparc.md   2008-02-07 17:47:50 UTC (rev 95169)
+++ trunk/mono/mono/mini/cpu-sparc.md   2008-02-07 17:56:54 UTC (rev 95170)
@@ -51,63 +51,15 @@
 break: len:64
 jmp: len:64
 br: len:8
-beq: len:8
-bge: len:8
-bgt: len:8
-ble: len:8
-blt: len:8
-bne.un: len:64
-bge.un: len:64
-bgt.un: len:64
-ble.un: len:64
-blt.un: len:64
-sparc_brz: src1:i len: 8
-sparc_brlez: src1:i len: 8
-sparc_brlz: src1:i len: 8
-sparc_brnz: src1:i len: 8
-sparc_brgz: src1:i len: 8
-sparc_brgez: src1:i len: 8
-sparc_cond_exc_eqz: src1:i len:64
-sparc_cond_exc_nez: src1:i len:64
-sparc_cond_exc_ltz: src1:i len:64
-sparc_cond_exc_gtz: src1:i len:64
-sparc_cond_exc_gez: src1:i len:64
-sparc_cond_exc_lez: src1:i len:64
-add: dest:i src1:i src2:i len:64
-sub: dest:i src1:i src2:i len:4
-mul: dest:i src1:i src2:i len:4
-div: dest:i src1:i src2:i len:64
-div.un: dest:i src1:i src2:i len:8
-rem: dest:d src1:i src2:i len:64
-rem.un: dest:d src1:i src2:i len:64
-and: dest:i src1:i src2:i len:4
-or: dest:i src1:i src2:i len:4
-xor: dest:i src1:i src2:i len:4
-shl: dest:i src1:i src2:i len:4
-shr: dest:i src1:i src2:i len:4
-shr.un: dest:i src1:i src2:i len:4
-neg: dest:i src1:i len:4
-not: dest:i src1:i len:4
-conv.i1: dest:i src1:i len:8
-conv.i2: dest:i src1:i len:8
-conv.i4: dest:i src1:i len:4
-conv.i8: dest:i src1:i len:4
-conv.r4: dest:f src1:i len:64
-conv.r8: dest:f src1:i len:64
-conv.u4: dest:i src1:i len:4
-conv.u8: dest:i src1:i len:4
+
 throw: src1:i len:64
 rethrow: src1:i len:64
-conv.ovf.u4: dest:i src1:i len:64
-ckfinite: dest:f src1:f len:40
-conv.u2: dest:i src1:i len:8
-conv.u1: dest:i src1:i len:4
-conv.i: dest:i src1:i len:4
-mul.ovf: dest:i src1:i src2:i len:64
-mul.ovf.un: dest:i src1:i src2:i len:64
 start_handler: len:64
 endfinally: len:64
 endfilter: src1:i len:64
+
+conv.ovf.u4: dest:i src1:i len:64
+ckfinite: dest:f src1:f len:40
 conv.u: dest:i src1:i len:4
 arglist: src1:i
 ceq: dest:i len:64
@@ -202,15 +154,6 @@
 cond_exc_no: len:64
 cond_exc_c: len:64
 cond_exc_nc: len:64
-long_shl: dest:i src1:i src2:i len:64
-long_shr: dest:i src1:i src2:i len:64
-long_shr_un: dest:i src1:i src2:i len:64
-long_conv_to_ovf_i: dest:i src1:i src2:i len:48
-long_mul_ovf: 
-long_conv_to_r_un: dest:f src1:i src2:i len:64 
-long_shr_imm: dest:i src1:i len:64
-long_shr_un_imm: dest:i src1:i len:64
-long_shl_imm: dest:i src1:i len:64
 float_beq: len:8
 float_bne_un: len:64
 float_blt: len:8
@@ -292,6 +235,19 @@
 int_shl_imm: dest:i src1:i len:64
 int_shr_imm: dest:i src1:i len:64
 int_shr_un_imm: dest:i src1:i len:64
+int_mul_ovf: dest:i src1:i src2:i len:64
+int_mul_ovf_un: dest:i src1:i src2:i len:64
+int_conv_to_i1: dest:i src1:i len:8
+int_conv_to_i2: dest:i src1:i len:8
+int_conv_to_i4: dest:i src1:i len:4
+int_conv_to_i8: dest:i src1:i len:4
+int_conv_to_r4: dest:f src1:i len:64
+int_conv_to_r8: dest:f src1:i len:64
+int_conv_to_u4: dest:i src1:i len:4
+int_conv_to_u8: dest:i src1:i len:4
+int_conv_to_u2: dest:i src1:i len:8
+int_conv_to_u1: dest:i src1:i len:4
+int_conv_to_i: dest:i src1:i len:4
 int_neg: dest:i src1:i len:64
 int_not: dest:i src1:i len:64
 int_ceq: dest:i len:64
@@ -299,15 +255,39 @@
 int_cgt_un: dest:i len:64
 int_clt: dest:i len:64
 int_clt_un: dest:i len:64
-int_beq: len:64
+int_beq: len:8
+int_bge: len:8
+int_bgt: len:8
+int_ble: len:8
+int_blt: len:8
 int_bne_un: len:64
-int_blt: len:64
-int_blt_un: len:64
-int_bgt: len:64
-int_bgt_un: len:64
-int_bge: len:64
 int_bge_un: len:64
-int_ble: len:64
+int_bgt_un: len:64
 int_ble_un: len:64
+int_blt_un: len:64
 
+# 64 bit opcodes
+long_shl: dest:i src1:i src2:i len:64
+long_shr: dest:i src1:i src2:i len:64
+long_shr_un: dest:i src1:i src2:i len:64
+long_conv_to_ovf_i: dest:i src1:i src2:i len:48
+long_mul_ovf: 
+long_conv_to_r_un: dest:f src1:i src2:i len:64 
+long_shr_imm: dest:i src1:i len:64
+long_shr_un_imm: dest:i src1:i len:64
+long_shl_imm: dest:i src1:i len:64
+
 memory_barrier: len:4
+
+sparc_brz: src1:i len: 8
+sparc_brlez: src1:i len: 8
+sparc_brlz: src1:i len: 8
+sparc_brnz: src1:i len: 8
+sparc_brgz: src1:i len: 8
+sparc_brgez: src1:i len: 8
+sparc_cond_exc_eqz: src1:i len:64
+sparc_cond_exc_nez: src1:i len:64
+sparc_cond_exc_ltz: src1:i len:64
+sparc_cond_exc_gtz: src1:i len:64
+sparc_cond_exc_gez: src1:i len:64
+sparc_cond_exc_lez: src1:i len:64

Modified: trunk/mono/mono/mini/mini-sparc.c
===================================================================
--- trunk/mono/mono/mini/mini-sparc.c   2008-02-07 17:47:50 UTC (rev 95169)
+++ trunk/mono/mono/mini/mini-sparc.c   2008-02-07 17:56:54 UTC (rev 95170)
@@ -1228,53 +1228,43 @@
        case OP_FCGT:
        case OP_FCGT_UN:
                return sparc_fbg;
-       case CEE_BEQ:
        case OP_IBEQ:
        case OP_CEQ:
        case OP_ICEQ:
        case OP_COND_EXC_EQ:
                return sparc_be;
-       case CEE_BNE_UN:
-       case OP_COND_EXC_NE_UN:
        case OP_IBNE_UN:
+       case OP_COND_EXC_NE_UN:
                return sparc_bne;
-       case CEE_BLT:
        case OP_IBLT:
        case OP_CLT:
        case OP_ICLT:
        case OP_COND_EXC_LT:
                return sparc_bl;
-       case CEE_BLT_UN:
        case OP_IBLT_UN:
        case OP_CLT_UN:
        case OP_ICLT_UN:
        case OP_COND_EXC_LT_UN:
                return sparc_blu;
-       case CEE_BGT:
        case OP_IBGT:
        case OP_CGT:
        case OP_ICGT:
        case OP_COND_EXC_GT:
                return sparc_bg;
-       case CEE_BGT_UN:
        case OP_IBGT_UN:
        case OP_CGT_UN:
        case OP_ICGT_UN:
        case OP_COND_EXC_GT_UN:
                return sparc_bgu;
-       case CEE_BGE:
        case OP_IBGE:
        case OP_COND_EXC_GE:
                return sparc_bge;
-       case CEE_BGE_UN:
        case OP_IBGE_UN:
        case OP_COND_EXC_GE_UN:
                return sparc_beu;
-       case CEE_BLE:
        case OP_IBLE:
        case OP_COND_EXC_LE:
                return sparc_ble;
-       case CEE_BLE_UN:
        case OP_IBLE_UN:
        case OP_COND_EXC_LE_UN:
                return sparc_bleu;
@@ -1619,12 +1609,12 @@
                                }
                        }
                        break;
-               case CEE_BEQ:
-               case CEE_BNE_UN:
-               case CEE_BLT:
-               case CEE_BGT:
-               case CEE_BGE:
-               case CEE_BLE:
+               case OP_IBEQ:
+               case OP_IBNE_UN:
+               case OP_IBLT:
+               case OP_IBGT:
+               case OP_IBGE:
+               case OP_IBLE:
                case OP_COND_EXC_EQ:
                case OP_COND_EXC_GE:
                case OP_COND_EXC_GT:
@@ -1644,22 +1634,22 @@
                                (last_ins->opcode == OP_COMPARE_IMM) &&
                                (last_ins->inst_imm == 0)) {
                                switch (ins->opcode) {
-                               case CEE_BEQ:
+                               case OP_IBEQ:
                                        ins->opcode = OP_SPARC_BRZ;
                                        break;
-                               case CEE_BNE_UN:
+                               case OP_IBNE_UN:
                                        ins->opcode = OP_SPARC_BRNZ;
                                        break;
-                               case CEE_BLT:
+                               case OP_IBLT:
                                        ins->opcode = OP_SPARC_BRLZ;
                                        break;
-                               case CEE_BGT:
+                               case OP_IBGT:
                                        ins->opcode = OP_SPARC_BRGZ;
                                        break;
-                               case CEE_BGE:
+                               case OP_IBGE:
                                        ins->opcode = OP_SPARC_BRGEZ;
                                        break;
-                               case CEE_BLE:
+                               case OP_IBLE:
                                        ins->opcode = OP_SPARC_BRLEZ;
                                        break;
                                case OP_COND_EXC_EQ:
@@ -1697,8 +1687,6 @@
                                continue;
                        }
                        break;
-               case CEE_CONV_I4:
-               case CEE_CONV_U4:
                case OP_MOVE:
                        /* 
                         * OP_MOVE reg, reg 
@@ -2474,22 +2462,22 @@
                        EMIT_LOAD_MEMBASE (ins, ldx);
                        break;
 #endif
-               case CEE_CONV_I1:
+               case OP_ICONV_TO_I1:
                        sparc_sll_imm (code, ins->sreg1, 24, sparc_o7);
                        sparc_sra_imm (code, sparc_o7, 24, ins->dreg);
                        break;
-               case CEE_CONV_I2:
+               case OP_ICONV_TO_I2:
                        sparc_sll_imm (code, ins->sreg1, 16, sparc_o7);
                        sparc_sra_imm (code, sparc_o7, 16, ins->dreg);
                        break;
-               case CEE_CONV_U1:
+               case OP_ICONV_TO_U1:
                        sparc_and_imm (code, FALSE, ins->sreg1, 0xff, 
ins->dreg);
                        break;
-               case CEE_CONV_U2:
+               case OP_ICONV_TO_U2:
                        sparc_sll_imm (code, ins->sreg1, 16, sparc_o7);
                        sparc_srl_imm (code, sparc_o7, 16, ins->dreg);
                        break;
-               case CEE_CONV_OVF_U4:
+               case OP_ICONV_TO_OVF_U4:
                        /* Only used on V9 */
                        sparc_cmp_imm (code, ins->sreg1, 0);
                        mono_add_patch_info (cfg, (guint8*)(code) - 
(cfg)->native_code,
@@ -2505,20 +2493,10 @@
                        sparc_nop (code);
                        sparc_mov_reg_reg (code, ins->sreg1, ins->dreg);
                        break;
-               case CEE_CONV_OVF_I4_UN:
+               case OP_ICONV_TO_OVF_I4_UN:
                        /* Only used on V9 */
                        NOT_IMPLEMENTED;
                        break;
-               case CEE_CONV_U:
-               case CEE_CONV_U8:
-                       /* Only used on V9 */
-                       sparc_srl_imm (code, ins->sreg1, 0, ins->dreg);
-                       break;
-               case CEE_CONV_I:
-               case CEE_CONV_I8:
-                       /* Only used on V9 */
-                       sparc_sra_imm (code, ins->sreg1, 0, ins->dreg);
-                       break;
                case OP_COMPARE:
                case OP_LCOMPARE:
                case OP_ICOMPARE:
@@ -2547,7 +2525,6 @@
                case OP_IADDCC:
                        sparc_add (code, TRUE, ins->sreg1, ins->sreg2, 
ins->dreg);
                        break;
-               case CEE_ADD:
                case OP_IADD:
                        sparc_add (code, FALSE, ins->sreg1, ins->sreg2, 
ins->dreg);
                        break;
@@ -2570,7 +2547,6 @@
                case OP_ISUBCC:
                        sparc_sub (code, TRUE, ins->sreg1, ins->sreg2, 
ins->dreg);
                        break;
-               case CEE_SUB:
                case OP_ISUB:
                        sparc_sub (code, FALSE, ins->sreg1, ins->sreg2, 
ins->dreg);
                        break;
@@ -2589,7 +2565,6 @@
                case OP_ISBB_IMM:
                        EMIT_ALU_IMM (ins, subx, TRUE);
                        break;
-               case CEE_AND:
                case OP_IAND:
                        sparc_and (code, FALSE, ins->sreg1, ins->sreg2, 
ins->dreg);
                        break;
@@ -2597,7 +2572,6 @@
                case OP_IAND_IMM:
                        EMIT_ALU_IMM (ins, and, FALSE);
                        break;
-               case CEE_DIV:
                case OP_IDIV:
                        /* Sign extend sreg1 into %y */
                        sparc_sra_imm (code, ins->sreg1, 31, sparc_o7);
@@ -2605,7 +2579,6 @@
                        sparc_sdiv (code, TRUE, ins->sreg1, ins->sreg2, 
ins->dreg);
                        EMIT_COND_SYSTEM_EXCEPTION_GENERAL (code, 
sparc_boverflow, "ArithmeticException", TRUE, sparc_icc_short);
                        break;
-               case CEE_DIV_UN:
                case OP_IDIV_UN:
                        sparc_wry (code, sparc_g0, sparc_g0);
                        sparc_udiv (code, FALSE, ins->sreg1, ins->sreg2, 
ins->dreg);
@@ -2643,7 +2616,6 @@
                        }
                        break;
                }
-               case CEE_REM:
                case OP_IREM:
                        /* Sign extend sreg1 into %y */
                        sparc_sra_imm (code, ins->sreg1, 31, sparc_o7);
@@ -2653,7 +2625,6 @@
                        sparc_smul (code, FALSE, ins->sreg2, sparc_o7, 
sparc_o7);
                        sparc_sub (code, FALSE, ins->sreg1, sparc_o7, 
ins->dreg);
                        break;
-               case CEE_REM_UN:
                case OP_IREM_UN:
                        sparc_wry (code, sparc_g0, sparc_g0);
                        sparc_udiv (code, FALSE, ins->sreg1, ins->sreg2, 
sparc_o7);
@@ -2678,7 +2649,6 @@
                        }
                        sparc_sub (code, FALSE, ins->sreg1, sparc_o7, 
ins->dreg);
                        break;
-               case CEE_OR:
                case OP_IOR:
                        sparc_or (code, FALSE, ins->sreg1, ins->sreg2, 
ins->dreg);
                        break;
@@ -2686,7 +2656,6 @@
                case OP_IOR_IMM:
                        EMIT_ALU_IMM (ins, or, FALSE);
                        break;
-               case CEE_XOR:
                case OP_IXOR:
                        sparc_xor (code, FALSE, ins->sreg1, ins->sreg2, 
ins->dreg);
                        break;
@@ -2694,7 +2663,6 @@
                case OP_IXOR_IMM:
                        EMIT_ALU_IMM (ins, xor, FALSE);
                        break;
-               case CEE_SHL:
                case OP_ISHL:
                        sparc_sll (code, ins->sreg1, ins->sreg2, ins->dreg);
                        break;
@@ -2707,7 +2675,6 @@
                                sparc_sll (code, ins->sreg1, sparc_o7, 
ins->dreg);
                        }
                        break;
-               case CEE_SHR:
                case OP_ISHR:
                        sparc_sra (code, ins->sreg1, ins->sreg2, ins->dreg);
                        break;
@@ -2729,7 +2696,6 @@
                                sparc_srl (code, ins->sreg1, sparc_o7, 
ins->dreg);
                        }
                        break;
-               case CEE_SHR_UN:
                case OP_ISHR_UN:
                        sparc_srl (code, ins->sreg1, ins->sreg2, ins->dreg);
                        break;
@@ -2766,17 +2732,14 @@
                                sparc_srlx (code, ins->sreg1, sparc_o7, 
ins->dreg);
                        }
                        break;
-               case CEE_NOT:
                case OP_INOT:
                        /* can't use sparc_not */
                        sparc_xnor (code, FALSE, ins->sreg1, sparc_g0, 
ins->dreg);
                        break;
-               case CEE_NEG:
                case OP_INEG:
                        /* can't use sparc_neg */
                        sparc_sub (code, FALSE, sparc_g0, ins->sreg1, 
ins->dreg);
                        break;
-               case CEE_MUL:
                case OP_IMUL:
                        sparc_smul (code, FALSE, ins->sreg1, ins->sreg2, 
ins->dreg);
                        break;
@@ -2799,7 +2762,6 @@
                                EMIT_ALU_IMM (ins, smul, FALSE);
                        break;
                }
-               case CEE_MUL_OVF:
                case OP_IMUL_OVF:
                        sparc_smul (code, TRUE, ins->sreg1, ins->sreg2, 
ins->dreg);
                        sparc_rdy (code, sparc_g1);
@@ -2807,7 +2769,6 @@
                        sparc_cmp (code, sparc_g1, sparc_o7);
                        EMIT_COND_SYSTEM_EXCEPTION_GENERAL (ins, sparc_bne, 
"OverflowException", TRUE, sparc_icc_short);
                        break;
-               case CEE_MUL_OVF_UN:
                case OP_IMUL_OVF_UN:
                        sparc_umul (code, TRUE, ins->sreg1, ins->sreg2, 
ins->dreg);
                        sparc_rdy (code, sparc_o7);
@@ -2824,8 +2785,8 @@
                        mono_add_patch_info (cfg, offset, 
(MonoJumpInfoType)ins->inst_i1, ins->inst_p0);
                        sparc_set_template (code, ins->dreg);
                        break;
-               case CEE_CONV_I4:
-               case CEE_CONV_U4:
+               case OP_ICONV_TO_I4:
+               case OP_ICONV_TO_U4:
                case OP_MOVE:
                        if (ins->sreg1 != ins->dreg)
                                sparc_mov_reg_reg (code, ins->sreg1, ins->dreg);
@@ -3213,23 +3174,6 @@
                case OP_COND_EXC_IC:
                        EMIT_COND_SYSTEM_EXCEPTION_GENERAL (ins, 
opcode_to_sparc_cond (ins->opcode), ins->inst_p1, TRUE, sparc_icc_short);
                        break;
-               case CEE_BEQ:
-               case CEE_BNE_UN:
-               case CEE_BLT:
-               case CEE_BLT_UN:
-               case CEE_BGT:
-               case CEE_BGT_UN:
-               case CEE_BGE:
-               case CEE_BGE_UN:
-               case CEE_BLE:
-               case CEE_BLE_UN: {
-                       if (sparcv9)
-                               EMIT_COND_BRANCH_PREDICTED (ins, 
opcode_to_sparc_cond (ins->opcode), 1, 1);
-                       else
-                               EMIT_COND_BRANCH (ins, opcode_to_sparc_cond 
(ins->opcode), 1, 1);
-                       break;
-               }
-
                case OP_IBEQ:
                case OP_IBNE_UN:
                case OP_IBLT:
@@ -3240,8 +3184,10 @@
                case OP_IBGE_UN:
                case OP_IBLE:
                case OP_IBLE_UN: {
-                       /* Only used on V9 */
-                       EMIT_COND_BRANCH_ICC (ins, opcode_to_sparc_cond 
(ins->opcode), 1, 1, sparc_icc_short);
+                       if (sparcv9)
+                               EMIT_COND_BRANCH_PREDICTED (ins, 
opcode_to_sparc_cond (ins->opcode), 1, 1);
+                       else
+                               EMIT_COND_BRANCH (ins, opcode_to_sparc_cond 
(ins->opcode), 1, 1);
                        break;
                }
 
@@ -3330,7 +3276,7 @@
                        sparc_fstod (code, FP_SCRATCH_REG, ins->dreg);
                        break;
                }
-               case CEE_CONV_R4: {
+               case OP_ICONV_TO_R4: {
                        gint32 offset = mono_spillvar_offset_float (cfg, 0);
 #ifdef SPARCV9
                        if (!sparc_is_imm13 (offset)) {
@@ -3356,7 +3302,7 @@
                        sparc_fstod (code, FP_SCRATCH_REG, ins->dreg);
                        break;
                }
-               case CEE_CONV_R8: {
+               case OP_ICONV_TO_R8: {
                        gint32 offset = mono_spillvar_offset_float (cfg, 0);
 #ifdef SPARCV9
                        if (!sparc_is_imm13 (offset)) {
@@ -3417,20 +3363,6 @@
                        }
                        break;
                }
-               case OP_FCONV_TO_I8:
-               case OP_FCONV_TO_U8:
-                       /* Emulated */
-                       g_assert_not_reached ();
-                       break;
-               case CEE_CONV_R_UN:
-                       /* Emulated */
-                       g_assert_not_reached ();
-                       break;
-               case OP_LCONV_TO_R_UN: { 
-                       /* Emulated */
-                       g_assert_not_reached ();
-                       break;
-               }
                case OP_LCONV_TO_OVF_I: {
                        guint32 *br [3], *label [1];
 

Modified: trunk/mono/mono/mini/mini-sparc.h
===================================================================
--- trunk/mono/mono/mini/mini-sparc.h   2008-02-07 17:47:50 UTC (rev 95169)
+++ trunk/mono/mono/mini/mini-sparc.h   2008-02-07 17:56:54 UTC (rev 95170)
@@ -126,6 +126,7 @@
 #define MONO_ARCH_HAVE_IMT 1
 #define MONO_ARCH_IMT_REG sparc_g1
 #define MONO_ARCH_COMMON_VTABLE_TRAMPOLINE 1
+#define MONO_ARCH_ENABLE_NORMALIZE_OPCODES 1
 
 #ifdef SPARCV9
 #define MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to