From: Bernhard Urban Date: Wed, 20 Sep 2017 09:55:34 +0000 (+0200) Subject: [ppc] add native type support for integer X-Git-Url: http://wien.tomnetworks.com/gitweb/?p=mono.git;a=commitdiff_plain;h=d295ab661864a5dee77a97d298bf2dde09c94de1 [ppc] add native type support for integer --- diff --git a/mono/mini/cpu-ppc.md b/mono/mini/cpu-ppc.md index 65cdc9b149d..e7544570c05 100644 --- a/mono/mini/cpu-ppc.md +++ b/mono/mini/cpu-ppc.md @@ -289,6 +289,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 diff --git a/mono/mini/mini-ppc.c b/mono/mini/mini-ppc.c index 1a947639a24..60d9475dfe3 100644 --- a/mono/mini/mini-ppc.c +++ b/mono/mini/mini-ppc.c @@ -1005,8 +1005,7 @@ get_call_info (MonoMethodSignature *sig) fr = PPC_FIRST_FPARG_REG; gr = PPC_FIRST_ARG_REG; - /* FIXME: handle returning a struct */ - if (MONO_TYPE_ISSTRUCT (sig->ret)) { + if (mini_type_is_vtype (sig->ret)) { cinfo->vtype_retaddr = TRUE; } @@ -4126,6 +4125,11 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb) ppc_mtctr (code, ins->sreg1); ppc_bcctr (code, PPC_BR_ALWAYS, 0); break; + case OP_ICNEQ: + ppc_li (code, ins->dreg, 0); + ppc_bc (code, PPC_BR_TRUE, PPC_BR_EQ, 2); + ppc_li (code, ins->dreg, 1); + break; case OP_CEQ: case OP_ICEQ: CASE_PPC64 (OP_LCEQ) @@ -4143,6 +4147,12 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb) ppc_bc (code, PPC_BR_TRUE, PPC_BR_LT, 2); ppc_li (code, ins->dreg, 0); break; + case OP_ICGE: + case OP_ICGE_UN: + ppc_li (code, ins->dreg, 1); + ppc_bc (code, PPC_BR_FALSE, PPC_BR_LT, 2); + ppc_li (code, ins->dreg, 0); + break; case OP_CGT: case OP_CGT_UN: case OP_ICGT: @@ -4153,6 +4163,12 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb) ppc_bc (code, PPC_BR_TRUE, PPC_BR_GT, 2); ppc_li (code, ins->dreg, 0); break; + case OP_ICLE: + case OP_ICLE_UN: + ppc_li (code, ins->dreg, 1); + ppc_bc (code, PPC_BR_FALSE, PPC_BR_GT, 2); + ppc_li (code, ins->dreg, 0); + break; case OP_COND_EXC_EQ: case OP_COND_EXC_NE_UN: case OP_COND_EXC_LT: