2007-10-19 Marek Habersack <mhabersack@novell.com>
[mono.git] / mono / mini / cpu-g4.md
index 638fb2828bc63e600aa63525dcb8ef4bd340f5d6..f7f229dbbdff3015d291f367519f8badb6145a0f 100644 (file)
@@ -45,6 +45,7 @@
 #
 # See the code in mini-x86.c for more details on how the specifiers are used.
 #
+memory_barrier: len:4
 nop: len:4
 break: len:4
 ldarg.0:
@@ -84,7 +85,7 @@ ldc.r8:
 dup:
 pop:
 jmp: len:92
-call: dest:a clob:c len:4
+call: dest:a clob:c len:16
 calli:
 ret:
 br.s:
@@ -135,9 +136,9 @@ stind.r8: src1:b src2:f
 add: dest:i src1:i src2:i len:4
 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:16
+div: dest:i src1:i src2:i len:40
 div.un: dest:i src1:i src2:i len:16
-rem: dest:i src1:i src2:i len:24
+rem: dest:i src1:i src2:i len:48
 rem.un: dest:i src1:i src2:i len:24
 and: dest:i src1:i src2:i len:4
 or: dest:i src1:i src2:i len:4
@@ -164,7 +165,8 @@ castclass:
 isinst:
 conv.r.un: dest:f src1:i len:32
 unbox:
-throw: src1:i len:8
+throw: src1:i len:20
+op_rethrow: src1:i len:20
 ldfld:
 ldflda:
 stfld:
@@ -214,7 +216,8 @@ conv.ovf.u4:
 conv.ovf.i8:
 conv.ovf.u8:
 refanyval:
-ckfinite: dest:f src1:f len:24
+ckfinite: src1:f
+ppc_check_finite: src1:i len:16
 mkrefany:
 ldtoken:
 conv.u2: dest:i src1:i len:4
@@ -233,7 +236,7 @@ add_ovf_carry: dest:i src1:i src2:i len:16
 sub_ovf_carry: dest:i src1:i src2:i len:16
 add_ovf_un_carry: dest:i src1:i src2:i len:16
 sub_ovf_un_carry: dest:i src1:i src2:i len:16
-start_handler: len:8
+start_handler: len:16
 endfinally: len:12
 leave:
 leave.s:
@@ -261,7 +264,7 @@ starg:
 ldloc:
 ldloca:
 stloc:
-localloc: dest:i src1:i len:30
+localloc: dest:i src1:i len:60
 endfilter: len:12
 unaligned.:
 volatile.:
@@ -274,10 +277,6 @@ sizeof:
 refanytype:
 illegal:
 endmac:
-mono_func1:
-mono_proc2:
-mono_proc3:
-mono_free:
 mono_objaddr:
 mono_ldptr:
 mono_vtaddr:
@@ -304,16 +303,16 @@ setreg: dest:i src1:i len:4 clob:r
 setregimm: dest:i len:8 clob:r
 setfreg: dest:f src1:f len:4 clob:r
 checkthis: src1:b len:4
-voidcall: len:8 clob:c
+voidcall: len:16 clob:c
 voidcall_reg: src1:i len:8 clob:c
 voidcall_membase: src1:b len:12 clob:c
-fcall: dest:f len:8 clob:c
-fcall_reg: dest:f src1:i len:8 clob:c
-fcall_membase: dest:f src1:b len:12 clob:c
-lcall: dest:l len:8 clob:c
+fcall: dest:g len:16 clob:c
+fcall_reg: dest:g src1:i len:8 clob:c
+fcall_membase: dest:g src1:b len:12 clob:c
+lcall: dest:l len:16 clob:c
 lcall_reg: dest:l src1:i len:8 clob:c
 lcall_membase: dest:l src1:b len:12 clob:c
-vcall: len:8 clob:c
+vcall: len:16 clob:c
 vcall_reg: src1:i len:8 clob:c
 vcall_membase: src1:b len:12 clob:c
 call_reg: dest:a src1:i len:8 clob:c
@@ -327,34 +326,49 @@ regvar:
 reg:
 regoffset:
 label:
-store_membase_imm: dest:b len:20
-store_membase_reg: dest:b src1:i len:12
-storei1_membase_imm: dest:b len:20
-storei1_membase_reg: dest:b src1:i len:12
-storei2_membase_imm: dest:b len:20
-storei2_membase_reg: dest:b src1:i len:12
-storei4_membase_imm: dest:b len:20
-storei4_membase_reg: dest:b src1:i len:12
-storei8_membase_imm: dest:b 
-storei8_membase_reg: dest:b src1:i 
-storer4_membase_reg: dest:b src1:f len:12
-storer8_membase_reg: dest:b src1:f len:12
-load_membase: dest:i src1:b len:12
-loadi1_membase: dest:i src1:b len:12
-loadu1_membase: dest:i src1:b len:12
-loadi2_membase: dest:i src1:b len:12
-loadu2_membase: dest:i src1:b len:12
-loadi4_membase: dest:i src1:b len:12
-loadu4_membase: dest:i src1:b len:12
-loadi8_membase: dest:i src1:b
-loadr4_membase: dest:f src1:b len:12
-loadr8_membase: dest:f src1:b len:12
+store_membase_imm:
+store_membase_reg: dest:b src1:i len:4
+storei1_membase_imm:
+storei1_membase_reg: dest:b src1:i len:4
+storei2_membase_imm:
+storei2_membase_reg: dest:b src1:i len:4
+storei4_membase_imm:
+storei4_membase_reg: dest:b src1:i len:4
+storei8_membase_imm:
+storei8_membase_reg:
+storer4_membase_reg: dest:b src1:f len:8
+storer8_membase_reg: dest:b src1:f len:4
+load_membase: dest:i src1:b len:4
+loadi1_membase: dest:i src1:b len:8
+loadu1_membase: dest:i src1:b len:4
+loadi2_membase: dest:i src1:b len:4
+loadu2_membase: dest:i src1:b len:4
+loadi4_membase: dest:i src1:b len:4
+loadu4_membase: dest:i src1:b len:4
+loadi8_membase:
+loadr4_membase: dest:f src1:b len:4
+loadr8_membase: dest:f src1:b len:4
+load_memindex: dest:i src1:b src2:i len:4
+loadi1_memindex: dest:i src1:b src2:i len:8
+loadu1_memindex: dest:i src1:b src2:i len:4
+loadi2_memindex: dest:i src1:b src2:i len:4
+loadu2_memindex: dest:i src1:b src2:i len:4
+loadi4_memindex: dest:i src1:b src2:i len:4
+loadu4_memindex: dest:i src1:b src2:i len:4
+loadr4_memindex: dest:f src1:b src2:i len:4
+loadr8_memindex: dest:f src1:b src2:i len:4
+store_memindex: dest:b src1:i src2:i len:4
+storei1_memindex: dest:b src1:i src2:i len:4
+storei2_memindex: dest:b src1:i src2:i len:4
+storei4_memindex: dest:b src1:i src2:i len:4
+storer4_memindex: dest:b src1:i src2:i len:4
+storer8_memindex: dest:b src1:i src2:i len:4
 loadu4_mem: dest:i len:8
 move: dest:i src1:i len:4
 fmove: dest:f src1:f len:4
-add_imm: dest:i src1:i len:12
-sub_imm: dest:i src1:i len:12
-mul_imm: dest:i src1:i len:12
+add_imm: dest:i src1:i len:4
+sub_imm: dest:i src1:i len:4
+mul_imm: dest:i src1:i len:4
 # 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)
@@ -362,12 +376,12 @@ div_imm: dest:i src1:i src2:i len:20
 div_un_imm: dest:i src1:i src2:i len:12
 rem_imm: dest:i src1:i src2:i len:28
 rem_un_imm: dest:i src1:i src2:i len:16
-and_imm: dest:i src1:i len:12
-or_imm: dest:i src1:i len:12
-xor_imm: dest:i src1:i len:12
-shl_imm: dest:i src1:i len:8
-shr_imm: dest:i src1:i len:8
-shr_un_imm: dest:i src1:i len:8
+and_imm: dest:i src1:i len:4
+or_imm: dest:i src1:i len:4
+xor_imm: dest:i src1:i len:4
+shl_imm: dest:i src1:i len:4
+shr_imm: dest:i src1:i len:4
+shr_un_imm: dest:i src1:i len:4
 cond_exc_eq: len:8
 cond_exc_ne_un: len:8
 cond_exc_lt: len:8
@@ -408,7 +422,7 @@ long_conv_to_u8:
 long_conv_to_u2:
 long_conv_to_u1:
 long_conv_to_i:
-long_conv_to_ovf_i: dest:i src1:i src2:i len:30
+long_conv_to_ovf_i: dest:i src1:i src2:i len:32
 long_conv_to_ovf_u:
 long_add_ovf:
 long_add_ovf_un:
@@ -521,36 +535,18 @@ float_conv_to_u: dest:i src1:f len:36
 call_handler: len:12
 op_endfilter: src1:i len:16
 aot_const: dest:i len:8
-x86_test_null: src1:i len:4
-x86_compare_membase_reg: src1:b src2:i len:8
-x86_compare_membase_imm: src1:b len:8
-x86_compare_reg_membase: src1:i src2:b len:8
-x86_inc_reg: dest:i src1:i clob:1 len:1
-x86_inc_membase: src1:b len:6
-x86_dec_reg: dest:i src1:i clob:1 len:1
-x86_dec_membase: src1:b len:6
-x86_add_membase_imm: src1:b len:8
-x86_sub_membase_imm: src1:b len:8
-x86_push: src1:i len:1
-x86_push_imm: len:5
-x86_push_membase: src1:b len:6
-x86_push_obj: src1:b len:30
-x86_lea: dest:i src1:i src2:i len:7
-x86_xchg: src1:i src2:i clob:x len:1
-x86_fpop: src1:f len:2
-x86_fp_load_i8: dest:f src1:b len:7
-x86_fp_load_i4: dest:f src1:b len:7
 sqrt: dest:f src1:f len:4
 adc: dest:i src1:i src2:i len:4
 addcc: dest:i src1:i src2:i len:4
 subcc: dest:i src1:i src2:i len:4
-adc_imm: dest:i src1:i len:12
-addcc_imm: dest:i src1:i len:12
-subcc_imm: dest:i src1:i len:12
+adc_imm:
+addcc_imm: dest:i src1:i len:4
+subcc_imm:
 sbb: dest:i src1:i src2:i len:4
-sbb_imm: dest:i src1:i len:12
+sbb_imm:
 br_reg: src1:i len:8
 ppc_subfic: dest:i src1:i len:4
 ppc_subfze: dest:i src1:i len:4
-op_bigmul: len:8 dest:l src1:i src2:i
-op_bigmul_un: len:8 dest:l src1:i src2:i
+op_bigmul: len:12 dest:l src1:i src2:i
+op_bigmul_un: len:12 dest:l src1:i src2:i
+tls_get: len:8 dest:i