[jit] Add support for unlimited size/number of arguments to the dyn call code (#5612)
[mono.git] / mono / mini / cpu-ppc64.md
index 85f2e8f3b8f603ae1705b4e24f644465bbef6c50..2c28e7dca7cd78c0d539da4e1b08306beee76472 100644 (file)
 #
 # See the code in mini-x86.c for more details on how the specifiers are used.
 #
+tailcall: len:124 clob:c
 memory_barrier: len:4
 nop: len:4
 relaxed_nop: len:4
-break: len:4
-jmp: len:92
+break: len:40
+seq_point: len:48
+il_seq_point: len:0
+jmp: len:96
 call: dest:a clob:c len:36
 br: len:4
 throw: src1:i len:40
-rethrow: src1:i len:20
+rethrow: src1:i len:40
 ckfinite: dest:f src1:f
 ppc_check_finite: src1:i len:16
 add_ovf_carry: dest:i src1:i src2:i len:16
@@ -61,7 +64,7 @@ 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:16
-endfinally: len:12
+endfinally: len:20
 ceq: dest:i len:12
 cgt: dest:i len:12
 cgt.un: dest:i len:12
@@ -75,23 +78,23 @@ oparglist: src1:i len:12
 setlret: src1:i src2:i len:12
 checkthis: src1:b len:4
 voidcall: len:36 clob:c
-voidcall_reg: src1:i len:12 clob:c
-voidcall_membase: src1:b len:12 clob:c
-fcall: dest:g len:16 clob:c
-fcall_reg: dest:g src1:i len:12 clob:c
-fcall_membase: dest:g src1:b len:12 clob:c
-lcall: dest:a len:16 clob:c
-lcall_reg: dest:a src1:i len:12 clob:c
-lcall_membase: dest:a src1:b len:12 clob:c
+voidcall_reg: src1:i len:16 clob:c
+voidcall_membase: src1:b len:16 clob:c
+fcall: dest:g len:36 clob:c
+fcall_reg: dest:g src1:i len:16 clob:c
+fcall_membase: dest:g src1:b len:16 clob:c
+lcall: dest:a len:36 clob:c
+lcall_reg: dest:a src1:i len:16 clob:c
+lcall_membase: dest:a src1:b len:16 clob:c
 vcall: len:16 clob:c
-vcall_reg: src1:i len:12 clob:c
+vcall_reg: src1:i len:16 clob:c
 vcall_membase: src1:b len:12 clob:c
-call_reg: dest:a src1:i len:12 clob:c
-call_membase: dest:a src1:b len:12 clob:c
+call_reg: dest:a src1:i len:16 clob:c
+call_membase: dest:a src1:b len:16 clob:c
 iconst: dest:i len:20
 i8const: dest:i len:20
 r4const: dest:f len:12
-r8const: dest:f len:12
+r8const: dest:f len:24
 label: len:0
 store_membase_reg: dest:b src1:i len:12
 storei1_membase_reg: dest:b src1:i len:12
@@ -117,13 +120,15 @@ 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
+loadi8_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
+storei8_memindex: dest:b src1:i src2:i len:4
+storer4_memindex: dest:b src1:i src2:i len:8
 storer8_memindex: dest:b src1:i src2:i len:4
 loadu4_mem: dest:i len:8
 move: dest:i src1:i len:4
@@ -196,9 +201,14 @@ float_cgt_un: dest:i src1:f src2:f len:20
 float_clt: dest:i src1:f src2:f len:16
 float_clt_un: dest:i src1:f src2:f len:20
 float_conv_to_u: dest:i src1:f len:36
-call_handler: len:12
-endfilter: src1:i len:16
+float_cneq: dest:i src1:f src2:f len:16
+float_cge: dest:i src1:f src2:f len:16
+float_cle: dest:i src1:f src2:f len:16
+call_handler: len:12 clob:c
+endfilter: src1:i len:20
 aot_const: dest:i len:8
+load_gotaddr: dest:i len:32
+got_entry: dest:i src1:b len:32
 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
@@ -210,10 +220,9 @@ ppc_subfic: dest:i src1:i len:4
 ppc_subfze: dest:i src1:i len:4
 bigmul: len:12 dest:i src1:i src2:i
 bigmul_un: len:12 dest:i src1:i src2:i
-tls_get: len:8 dest:i
 
 # Linear IR opcodes
-dummy_use: len:0
+dummy_use: src1:i len:0
 dummy_store: len:0
 not_reached: len:0
 not_null: src1:i len:0
@@ -238,9 +247,9 @@ 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
 sext_i4: dest:i src1:i len:4
-int_conv_to_r4: dest:f src1:i len:36
-int_conv_to_r8: dest:f src1:i len:36
-int_conv_to_u4: dest:i src1:i
+int_conv_to_r4: dest:f src1:i len:20
+int_conv_to_r8: dest:f src1:i len:16
+int_conv_to_u4: 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_beq: len:8
@@ -267,7 +276,7 @@ int_sbb: dest:i src1:i src2:i len:4
 int_adc_imm: dest:i src1:i len:12
 int_sbb_imm: dest:i src1:i len:12
 
-int_add_imm: dest:i src1:i len:12
+int_add_imm: dest:i src1:i len:4
 int_sub_imm: dest:i src1:i len:12
 int_mul_imm: dest:i src1:i len:12
 int_div_imm: dest:i src1:i len:20
@@ -287,6 +296,12 @@ int_cgt_un: dest:i len:12
 int_clt: dest:i len:12
 int_clt_un: dest:i len:12
 
+int_cneq: dest:i len:12
+int_cge: dest:i len:12
+int_cle: dest:i len:12
+int_cge_un: dest:i len:12
+int_cle_un: dest:i len:12
+
 cond_exc_ieq: len:8
 cond_exc_ine_un: len:8
 cond_exc_ilt: len:8
@@ -309,6 +324,7 @@ icompare_imm: src1:i len:12
 long_add: dest:i src1:i src2:i len:4
 long_sub: dest:i src1:i src2:i len:4
 long_mul: dest:i src1:i src2:i len:4
+long_mul_imm: dest:i src1:i len:4
 long_div: dest:i src1:i src2:i len:40
 long_div_un: dest:i src1:i src2:i len:16
 long_rem: dest:i src1:i src2:i len:48
@@ -317,18 +333,23 @@ long_and: dest:i src1:i src2:i len:4
 long_or: dest:i src1:i src2:i len:4
 long_xor: dest:i src1:i src2:i len:4
 long_shl: dest:i src1:i src2:i len:4
+long_shl_imm: dest:i src1:i len:4
 long_shr: dest:i src1:i src2:i len:4
 long_shr_un: dest:i src1:i src2:i len:4
+long_shr_imm: dest:i src1:i len:4
+long_shr_un_imm: dest:i src1:i len:4
 long_neg: dest:i src1:i len:4
 long_not: dest:i src1:i len:4
-long_conv_to_i1: dest:i src1:i len:8
-long_conv_to_i2: dest:i src1:i len:8
+long_conv_to_i1: dest:i src1:i len:4
+long_conv_to_i2: dest:i src1:i len:4
 long_conv_to_i4: dest:i src1:i len:4
-long_conv_to_r4: dest:f src1:i len:36
-long_conv_to_r8: dest:f src1:i len:36
+long_conv_to_r4: dest:f src1:i len:16
+long_conv_to_r8: dest:f src1:i len:12
 long_conv_to_u4: dest:i src1:i
-long_conv_to_u2: dest:i src1:i len:8
+long_conv_to_u2: dest:i src1:i len:4
 long_conv_to_u1: dest:i src1:i len:4
+zext_i4: dest:i src1:i len:4
+
 long_beq: len:8
 long_bge: len:8
 long_bgt: len:8
@@ -363,9 +384,15 @@ lcompare_imm: src1:i len:12
 
 #long_conv_to_ovf_i4_2: dest:i src1:i src2:i len:30
 
-vcall2: len:20 clob:c
-vcall2_reg: src1:i len:8 clob:c
-vcall2_membase: src1:b len:12 clob:c
+vcall2: len:36 clob:c
+vcall2_reg: src1:i len:16 clob:c
+vcall2_membase: src1:b len:16 clob:c
+
+jump_table: dest:i len:20
 
-jump_table: dest:i len:8
+atomic_add_i4: src1:b src2:i dest:i len:28
+atomic_add_i8: src1:b src2:i dest:i len:28
+atomic_cas_i4: src1:b src2:i src3:i dest:i len:38
+atomic_cas_i8: src1:b src2:i src3:i dest:i len:38
 
+gc_safe_point: len:0