Author: zoltan
Date: 2005-04-15 11:36:41 -0400 (Fri, 15 Apr 2005)
New Revision: 43053

Modified:
   branches/vargaz/mini-xp-local-regalloc/mono/mono/mini/ChangeLog
   branches/vargaz/mini-xp-local-regalloc/mono/mono/mini/cpu-pentium.md
   branches/vargaz/mini-xp-local-regalloc/mono/mono/mini/linear-scan.c
Log:
2005-04-15  Zoltan Varga  <[EMAIL PROTECTED]>

        * linear-scan.c (mono_linear_scan): Only enable the temporary->regvar
        optimization if using the new allocator.

        * cpu-pentium.md: Changes required by the new allocator.


Modified: branches/vargaz/mini-xp-local-regalloc/mono/mono/mini/ChangeLog
===================================================================
--- branches/vargaz/mini-xp-local-regalloc/mono/mono/mini/ChangeLog     
2005-04-15 15:35:49 UTC (rev 43052)
+++ branches/vargaz/mini-xp-local-regalloc/mono/mono/mini/ChangeLog     
2005-04-15 15:36:41 UTC (rev 43053)
@@ -1,5 +1,10 @@
 2005-04-15  Zoltan Varga  <[EMAIL PROTECTED]>
 
+       * linear-scan.c (mono_linear_scan): Only enable the temporary->regvar
+       optimization if using the new allocator.
+
+       * cpu-pentium.md: Changes required by the new allocator.
+
        * basic-long.cs: Fix test method name.
 
        * mini-codegen.c: Add generalized support for register pairs and 
allocation

Modified: branches/vargaz/mini-xp-local-regalloc/mono/mono/mini/cpu-pentium.md
===================================================================
--- branches/vargaz/mini-xp-local-regalloc/mono/mono/mini/cpu-pentium.md        
2005-04-15 15:35:49 UTC (rev 43052)
+++ branches/vargaz/mini-xp-local-regalloc/mono/mono/mini/cpu-pentium.md        
2005-04-15 15:36:41 UTC (rev 43053)
@@ -17,8 +17,10 @@
 #      f  floating point register
 #      a  EAX register
 #      d  EDX register
+#   s  ECX register
 #      l  long reg (forced eax:edx)
 #      L  long reg (dynamic)
+#      y  the dest reg needs to be one of EAX,EBX,ECX,EDX (sete opcodes)
 #
 # len:number         describe the maximun length in bytes of the instruction
 #                   number is a positive integer.  If the length is not 
specified
@@ -35,10 +37,8 @@
 #      c  clobbers caller-save registers
 #      1  clobbers the first source register
 #      a  EAX is clobbered
-#   d  EAX and EDX are clobbered
-#      s  the src2 operand needs to be in ECX (shift opcodes)
+#   d  EDX is clobbered
 #      x  both the source operands are clobbered (xchg)
-#      b  the dest reg needs to be one of EAX,EBX,ECX,EDX (sete opcodes)
 #
 # flags:spec        describe if the instruction uses or sets the flags (unused)
 #
@@ -146,16 +146,16 @@
 add: dest:i src1:i src2:i len:2 clob:1
 sub: dest:i src1:i src2:i len:2 clob:1
 mul: dest:i src1:i src2:i len:3 clob:1
-div: dest:a src1:i src2:i len:15 clob:d
-div.un: dest:a src1:i src2:i len:15 clob:d
-rem: dest:d src1:i src2:i len:15 clob:d
-rem.un: dest:d src1:i src2:i len:15 clob:d
+div: dest:a src1:a src2:i len:15 clob:d
+div.un: dest:a src1:a src2:i len:15 clob:d
+rem: dest:d src1:a src2:i len:15 clob:a
+rem.un: dest:d src1:a src2:i len:15 clob:a
 and: dest:i src1:i src2:i len:2 clob:1
 or: dest:i src1:i src2:i len:2 clob:1
 xor: dest:i src1:i src2:i len:2 clob:1
-shl: dest:i src1:i src2:i clob:s len:2
-shr: dest:i src1:i src2:i clob:s len:2
-shr.un: dest:i src1:i src2:i clob:s len:2
+shl: dest:i src1:i src2:s clob:1 len:2
+shr: dest:i src1:i src2:s clob:1 len:2
+shr.un: dest:i src1:i src2:s clob:1 len:2
 neg: dest:i src1:i len:2 clob:1
 not: dest:i src1:i len:2 clob:1
 conv.i1: dest:i src1:i len:3
@@ -255,12 +255,12 @@
 prefix1:
 prefixref:
 arglist:
-ceq: dest:i len:6 clob:b
-cgt: dest:i len:6 clob:b
-cgt.un: dest:i len:6 clob:b
-clt: dest:i len:6 clob:b
-clt.un: dest:i len:6 clob:b
-cne: dest:i len:6 clob:b
+ceq: dest:y len:6
+cgt: dest:y len:6
+cgt.un: dest:y len:6
+clt: dest:y len:6
+clt.un: dest:y len:6
+cne: dest:y len:6
 ldftn:
 ldvirtftn:
 ldarg:
@@ -360,10 +360,10 @@
 # there is no actual support for division or reminder by immediate
 # we simulate them, though (but we need to change the burg rules 
 # to allocate a symbolic reg for src2)
-div_imm: dest:a src1:i src2:i len:15 clob:d
-div_un_imm: dest:a src1:i src2:i len:15 clob:d
-rem_imm: dest:d src1:i src2:i len:15 clob:d
-rem_un_imm: dest:d src1:i src2:i len:15 clob:d
+div_imm: dest:a src1:a src2:i len:15 clob:d
+div_un_imm: dest:a src1:a src2:i len:15 clob:d
+rem_imm: dest:d src1:a src2:i len:15 clob:a
+rem_un_imm: dest:d src1:a src2:i len:15 clob:a
 and_imm: dest:i src1:i len:6 clob:1
 or_imm: dest:i src1:i len:6 clob:1
 xor_imm: dest:i src1:i len:6 clob:1
@@ -394,9 +394,9 @@
 long_and:
 long_or:
 long_xor:
-long_shl: dest:L src1:L src2:i clob:s len:21
-long_shr: dest:L src1:L src2:i clob:s len:22
-long_shr_un: dest:L src1:L src2:i clob:s len:22
+long_shl: dest:L src1:L src2:s clob:1 len:21
+long_shr: dest:L src1:L src2:s clob:1 len:22
+long_shr_un: dest:L src1:L src2:s clob:1 len:22
 long_neg:
 long_not:
 long_conv_to_i1:
@@ -443,9 +443,9 @@
 long_clt_un:
 long_conv_to_r_un: dest:f src1:i src2:i len:37 
 long_conv_to_u:
-long_shr_imm: dest:L src1:L len:10
-long_shr_un_imm: dest:L src1:L len:10
-long_shl_imm: dest:L src1:L len:10
+long_shr_imm: dest:L src1:L clob:1 len:10
+long_shr_un_imm: dest:L src1:L clob:1 len:10
+long_shl_imm: dest:L src1:L clob:1 len:10
 long_add_imm:
 long_sub_imm:
 long_beq:
@@ -477,16 +477,16 @@
 float_rem_un: dest:f src1:f src2:f len:17
 float_neg: dest:f src1:f len:2
 float_not: dest:f src1:f len:2
-float_conv_to_i1: dest:i src1:f len:39 clob:b
-float_conv_to_i2: dest:i src1:f len:39 clob:b
-float_conv_to_i4: dest:i src1:f len:39 clob:b
-float_conv_to_i8: dest:L src1:f len:39 clob:b
+float_conv_to_i1: dest:y src1:f len:39
+float_conv_to_i2: dest:y src1:f len:39
+float_conv_to_i4: dest:i src1:f len:39
+float_conv_to_i8: dest:L src1:f len:39
 float_conv_to_r4:
 float_conv_to_r8:
-float_conv_to_u4: dest:i src1:f len:39 clob:b
-float_conv_to_u8: dest:L src1:f len:39 clob:b
-float_conv_to_u2: dest:i src1:f len:39 clob:b
-float_conv_to_u1: dest:i src1:f len:39 clob:b
+float_conv_to_u4: dest:i src1:f len:39
+float_conv_to_u8: dest:L src1:f len:39
+float_conv_to_u2: dest:y src1:f len:39
+float_conv_to_u1: dest:y src1:f len:39
 float_conv_to_i: dest:i src1:f len:39
 float_conv_to_ovf_i: dest:a src1:f len:30
 float_conv_to_ovd_u: dest:a src1:f len:30
@@ -514,11 +514,11 @@
 float_conv_to_ovf_u4:
 float_conv_to_ovf_i8:
 float_conv_to_ovf_u8:
-float_ceq: dest:i src1:f src2:f len:25 clob:b
-float_cgt: dest:i src1:f src2:f len:25 clob:b
-float_cgt_un: dest:i src1:f src2:f len:37 clob:b
-float_clt: dest:i src1:f src2:f len:25 clob:b
-float_clt_un: dest:i src1:f src2:f len:32 clob:b
+float_ceq: dest:y src1:f src2:f len:25
+float_cgt: dest:y src1:f src2:f len:25
+float_cgt_un: dest:y src1:f src2:f len:37
+float_clt: dest:y src1:f src2:f len:25
+float_clt_un: dest:y src1:f src2:f len:32
 float_conv_to_u: dest:i src1:f len:36
 call_handler: len:10
 aot_const: dest:i len:5

Modified: branches/vargaz/mini-xp-local-regalloc/mono/mono/mini/linear-scan.c
===================================================================
--- branches/vargaz/mini-xp-local-regalloc/mono/mono/mini/linear-scan.c 
2005-04-15 15:35:49 UTC (rev 43052)
+++ branches/vargaz/mini-xp-local-regalloc/mono/mono/mini/linear-scan.c 
2005-04-15 15:36:41 UTC (rev 43053)
@@ -221,7 +221,7 @@
                                        }
                                }
 #else
-#if 1
+#ifdef MONO_ARCH_HAS_XP_LOCAL_REGALLOC
                                cfg->varinfo [vmv->idx]->opcode = OP_REGVAR;
                                cfg->varinfo [vmv->idx]->dreg = 
mono_regstate_next_int (cfg->rs);
 

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

Reply via email to