diff --git a/src/mono/mono/mini/cpu-amd64.md b/src/mono/mono/mini/cpu-amd64.md index 8ee095962f51f1..0c298d0bfe7428 100644 --- a/src/mono/mono/mini/cpu-amd64.md +++ b/src/mono/mono/mini/cpu-amd64.md @@ -267,7 +267,6 @@ float_conv_to_u4: dest:i src1:f len:49 float_conv_to_u8: dest:i src1:f len:49 float_conv_to_u2: dest:i src1:f len:49 float_conv_to_u1: dest:i src1:f len:49 -float_conv_to_i: dest:i src1:f len:49 float_conv_to_ovf_i: dest:a src1:f len:40 float_conv_to_ovd_u: dest:a src1:f len:40 float_mul_ovf: @@ -293,7 +292,6 @@ r4_conv_to_u2: dest:i src1:f len:32 r4_conv_to_i4: dest:i src1:f len:16 r4_conv_to_u4: dest:i src1:f len:32 r4_conv_to_i8: dest:i src1:f len:32 -r4_conv_to_i: dest:i src1:f len:32 r4_conv_to_r8: dest:f src1:f len:17 r4_conv_to_r4: dest:f src1:f len:17 r4_add: dest:f src1:f src2:f clob:1 len:5 diff --git a/src/mono/mono/mini/cpu-arm.md b/src/mono/mono/mini/cpu-arm.md index cab9cd2c45bcd1..728172afb50a71 100644 --- a/src/mono/mono/mini/cpu-arm.md +++ b/src/mono/mono/mini/cpu-arm.md @@ -211,7 +211,6 @@ float_conv_to_u4: dest:i src1:f len:88 float_conv_to_u8: dest:l src1:f len:88 float_conv_to_u2: dest:i src1:f len:88 float_conv_to_u1: dest:i src1:f len:88 -float_conv_to_i: dest:i src1:f len:40 float_ceq: dest:i src1:f src2:f len:16 float_cgt: dest:i src1:f src2:f len:16 float_cgt_un: dest:i src1:f src2:f len:20 @@ -226,7 +225,6 @@ rmove: dest:f src1:f len:4 r4_conv_to_i1: dest:i src1:f len:88 r4_conv_to_i2: dest:i src1:f len:88 r4_conv_to_i4: dest:i src1:f len:88 -r4_conv_to_i: dest:i src1:f len:88 r4_conv_to_u1: dest:i src1:f len:88 r4_conv_to_u2: dest:i src1:f len:88 r4_conv_to_u4: dest:i src1:f len:88 diff --git a/src/mono/mono/mini/cpu-arm64.md b/src/mono/mono/mini/cpu-arm64.md index 06e4fe0d5e9798..073d1eeb13cc04 100644 --- a/src/mono/mono/mini/cpu-arm64.md +++ b/src/mono/mono/mini/cpu-arm64.md @@ -209,7 +209,6 @@ float_conv_to_u4: dest:i src1:f len:40 float_conv_to_u8: dest:l src1:f len:40 float_conv_to_u2: dest:i src1:f len:40 float_conv_to_u1: dest:i src1:f len:40 -float_conv_to_i: dest:i src1:f len:40 float_ceq: dest:i src1:f src2:f len:16 float_cgt: dest:i src1:f src2:f len:16 float_cgt_un: dest:i src1:f src2:f len:20 @@ -228,7 +227,6 @@ r4_conv_to_u2: dest:i src1:f len:8 r4_conv_to_i4: dest:i src1:f len:8 r4_conv_to_u4: dest:i src1:f len:8 r4_conv_to_i8: dest:l src1:f len:8 -r4_conv_to_i: dest:l src1:f len:8 r4_conv_to_u8: dest:l src1:f len:8 r4_conv_to_r4: dest:f src1:f len:4 r4_conv_to_r8: dest:f src1:f len:4 diff --git a/src/mono/mono/mini/cpu-mips.md b/src/mono/mono/mini/cpu-mips.md index 3757749fcdf676..523bc6bdb2298e 100644 --- a/src/mono/mono/mini/cpu-mips.md +++ b/src/mono/mono/mini/cpu-mips.md @@ -377,7 +377,6 @@ float_conv_to_u4: dest:i src1:f len:40 float_conv_to_u8: dest:l src1:f len:40 float_conv_to_u2: dest:i src1:f len:40 float_conv_to_u1: dest:i src1:f len:40 -float_conv_to_i: dest:i src1:f len:40 float_ceq: dest:i src1:f src2:f len:20 float_cgt: dest:i src1:f src2:f len:20 float_cgt_un: dest:i src1:f src2:f len:20 diff --git a/src/mono/mono/mini/cpu-ppc.md b/src/mono/mono/mini/cpu-ppc.md index 69e9e1beb525ff..23b4a64d2309c9 100644 --- a/src/mono/mono/mini/cpu-ppc.md +++ b/src/mono/mono/mini/cpu-ppc.md @@ -194,7 +194,6 @@ float_conv_to_u4: dest:i src1:f len:40 float_conv_to_u8: dest:l src1:f len:40 float_conv_to_u2: dest:i src1:f len:40 float_conv_to_u1: dest:i src1:f len:40 -float_conv_to_i: dest:i src1:f len:40 float_ceq: dest:i src1:f src2:f len:16 float_cgt: dest:i src1:f src2:f len:16 float_cgt_un: dest:i src1:f src2:f len:20 diff --git a/src/mono/mono/mini/cpu-ppc64.md b/src/mono/mono/mini/cpu-ppc64.md index 6ce9314bffe8e5..f59e1ee1b85193 100644 --- a/src/mono/mono/mini/cpu-ppc64.md +++ b/src/mono/mono/mini/cpu-ppc64.md @@ -198,7 +198,6 @@ float_conv_to_u4: dest:i src1:f len:40 float_conv_to_u8: dest:i src1:f len:40 float_conv_to_u2: dest:i src1:f len:40 float_conv_to_u1: dest:i src1:f len:40 -float_conv_to_i: dest:i src1:f len:40 float_ceq: dest:i src1:f src2:f len:16 float_cgt: dest:i src1:f src2:f len:16 float_cgt_un: dest:i src1:f src2:f len:20 diff --git a/src/mono/mono/mini/cpu-s390x.md b/src/mono/mono/mini/cpu-s390x.md index d4469bda39c972..0053fa3a1ecc63 100644 --- a/src/mono/mono/mini/cpu-s390x.md +++ b/src/mono/mono/mini/cpu-s390x.md @@ -122,7 +122,6 @@ float_conv_to_i1: dest:i src1:f len:50 float_conv_to_i2: dest:i src1:f len:50 float_conv_to_i4: dest:i src1:f len:50 float_conv_to_i8: dest:l src1:f len:50 -float_conv_to_i: dest:i src1:f len:52 float_conv_to_r4: dest:f src1:f len:8 float_conv_to_u1: dest:i src1:f len:72 float_conv_to_u2: dest:i src1:f len:72 @@ -143,7 +142,6 @@ r4_conv_to_u1: dest:i src1:f len:32 r4_conv_to_i2: dest:i src1:f len:32 r4_conv_to_u2: dest:i src1:f len:32 r4_conv_to_i4: dest:i src1:f len:16 -r4_conv_to_i: dest:i src1:f len:16 r4_conv_to_u4: dest:i src1:f len:32 r4_conv_to_i8: dest:i src1:f len:32 r4_conv_to_r8: dest:f src1:f len:17 diff --git a/src/mono/mono/mini/cpu-sparc.md b/src/mono/mono/mini/cpu-sparc.md index 64487cf52a328e..b6c78ec53a03e4 100644 --- a/src/mono/mono/mini/cpu-sparc.md +++ b/src/mono/mono/mini/cpu-sparc.md @@ -174,7 +174,6 @@ float_conv_to_u4: dest:i src1:f len:40 float_conv_to_u8: dest:L src1:f len:40 float_conv_to_u2: dest:i src1:f len:40 float_conv_to_u1: dest:i src1:f len:40 -float_conv_to_i: dest:i src1:f len:40 float_ceq: dest:i src1:f src2:f len:64 float_cgt: dest:i src1:f src2:f len:64 float_cgt_un: dest:i src1:f src2:f len:64 diff --git a/src/mono/mono/mini/cpu-x86.md b/src/mono/mono/mini/cpu-x86.md index 6132887bbd3450..6a2f370996a474 100644 --- a/src/mono/mono/mini/cpu-x86.md +++ b/src/mono/mono/mini/cpu-x86.md @@ -254,7 +254,6 @@ 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 float_mul_ovf: diff --git a/src/mono/mono/mini/method-to-ir.c b/src/mono/mono/mini/method-to-ir.c index 0dda7e4ab1e626..5033aed32bd487 100644 --- a/src/mono/mono/mini/method-to-ir.c +++ b/src/mono/mono/mini/method-to-ir.c @@ -1182,6 +1182,17 @@ type_from_op (MonoCompile *cfg, MonoInst *ins, MonoInst *src1, MonoInst *src2) case MONO_CEE_CONV_OVF_U: ins->type = STACK_PTR; ins->opcode += ovfops_op_map [src1->type]; + + switch (ins->opcode) { + case OP_FCONV_TO_I: + ins->opcode = TARGET_SIZEOF_VOID_P == 4 ? OP_FCONV_TO_I4 : OP_FCONV_TO_I8; + break; + case OP_RCONV_TO_I: + ins->opcode = TARGET_SIZEOF_VOID_P == 4 ? OP_RCONV_TO_I4 : OP_RCONV_TO_I8; + break; + default: + break; + } break; case MONO_CEE_ADD_OVF: case MONO_CEE_ADD_OVF_UN: @@ -8723,8 +8734,8 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b break; case MONO_CEE_CONV_U2: case MONO_CEE_CONV_U1: - case MONO_CEE_CONV_I: case MONO_CEE_CONV_U: + case MONO_CEE_CONV_I: ADD_UNOP (il_op); CHECK_CFG_EXCEPTION; break; diff --git a/src/mono/mono/mini/mini-amd64.c b/src/mono/mono/mini/mini-amd64.c index 838fb352d75e34..fadb4ba64217cc 100644 --- a/src/mono/mono/mini/mini-amd64.c +++ b/src/mono/mono/mini/mini-amd64.c @@ -6013,7 +6013,6 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb) case OP_FCONV_TO_I4: code = emit_float_to_int (cfg, code, ins->dreg, ins->sreg1, 4, TRUE); break; - case OP_FCONV_TO_I: case OP_FCONV_TO_I8: code = emit_float_to_int (cfg, code, ins->dreg, ins->sreg1, 8, TRUE); break; @@ -6042,7 +6041,6 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb) amd64_sse_cvtss2si_reg_reg (code, ins->dreg, ins->sreg1); break; case OP_RCONV_TO_I8: - case OP_RCONV_TO_I: amd64_sse_cvtss2si_reg_reg_size (code, ins->dreg, ins->sreg1, 8); break; case OP_RCONV_TO_R8: diff --git a/src/mono/mono/mini/mini-arm.c b/src/mono/mono/mini/mini-arm.c index 8adcaad4e2304c..1affa5edadc8dc 100644 --- a/src/mono/mono/mini/mini-arm.c +++ b/src/mono/mono/mini/mini-arm.c @@ -5682,7 +5682,6 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb) code = emit_float_to_int (cfg, code, ins->dreg, ins->sreg1, 2, FALSE); break; case OP_FCONV_TO_I4: - case OP_FCONV_TO_I: code = emit_float_to_int (cfg, code, ins->dreg, ins->sreg1, 4, TRUE); break; case OP_FCONV_TO_U4: @@ -5904,7 +5903,6 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb) code = emit_r4_to_int (cfg, code, ins->dreg, ins->sreg1, 2, FALSE); break; case OP_RCONV_TO_I4: - case OP_RCONV_TO_I: code = emit_r4_to_int (cfg, code, ins->dreg, ins->sreg1, 4, TRUE); break; case OP_RCONV_TO_U4: diff --git a/src/mono/mono/mini/mini-arm64.c b/src/mono/mono/mini/mini-arm64.c index 28b97fac4786a8..607f99623c4ba3 100644 --- a/src/mono/mono/mini/mini-arm64.c +++ b/src/mono/mono/mini/mini-arm64.c @@ -4233,7 +4233,6 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb) arm_fcvtzu_dx (code, dreg, sreg1); break; case OP_FCONV_TO_I8: - case OP_FCONV_TO_I: arm_fcvtzs_dx (code, dreg, sreg1); break; case OP_FCONV_TO_U8: @@ -4350,7 +4349,6 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb) arm_fcvtzu_sx (code, dreg, sreg1); break; case OP_RCONV_TO_I8: - case OP_RCONV_TO_I: arm_fcvtzs_sx (code, dreg, sreg1); break; case OP_RCONV_TO_U8: diff --git a/src/mono/mono/mini/mini-llvm.c b/src/mono/mono/mini/mini-llvm.c index d11a00749903f0..8d9204a3d4a371 100644 --- a/src/mono/mono/mini/mini-llvm.c +++ b/src/mono/mono/mini/mini-llvm.c @@ -997,9 +997,6 @@ op_to_llvm_type (int opcode) case OP_FCONV_TO_U8: case OP_RCONV_TO_U8: return LLVMInt64Type (); - case OP_FCONV_TO_I: - case OP_RCONV_TO_I: - return TARGET_SIZEOF_VOID_P == 8 ? LLVMInt64Type () : LLVMInt32Type (); case OP_IADD_OVF: case OP_IADD_OVF_UN: case OP_ISUB_OVF: @@ -6594,10 +6591,6 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb) case OP_RCONV_TO_I8: values [ins->dreg] = LLVMBuildFPToSI (builder, lhs, LLVMInt64Type (), dname); break; - case OP_FCONV_TO_I: - case OP_RCONV_TO_I: - values [ins->dreg] = LLVMBuildFPToSI (builder, lhs, IntPtrType (), dname); - break; case OP_ICONV_TO_R8: case OP_LCONV_TO_R8: values [ins->dreg] = LLVMBuildSIToFP (builder, lhs, LLVMDoubleType (), dname); @@ -7804,8 +7797,8 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb) break; case OP_FMAX: case OP_FMIN: { - LLVMValueRef args [] = { l, r }; #if defined(TARGET_X86) || defined(TARGET_AMD64) + LLVMValueRef args [] = { l, r }; LLVMTypeRef t = LLVMTypeOf (l); LLVMTypeRef elem_t = LLVMGetElementType (t); unsigned int elems = LLVMGetVectorSize (t); @@ -7833,6 +7826,7 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb) } #elif defined(TARGET_ARM64) + LLVMValueRef args [] = { l, r }; IntrinsicId iid = ins->inst_c0 == OP_FMAX ? INTRINS_AARCH64_ADV_SIMD_FMAX : INTRINS_AARCH64_ADV_SIMD_FMIN; llvm_ovr_tag_t ovr_tag = ovr_tag_from_mono_vector_class (ins->klass); result = call_overloaded_intrins (ctx, iid, ovr_tag, args, ""); diff --git a/src/mono/mono/mini/mini-mips.c b/src/mono/mono/mini/mini-mips.c index 809196338135a6..f05fb8b9f79601 100644 --- a/src/mono/mono/mini/mini-mips.c +++ b/src/mono/mono/mini/mini-mips.c @@ -4266,7 +4266,6 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb) code = emit_float_to_int (cfg, code, ins->dreg, ins->sreg1, 2, FALSE); break; case OP_FCONV_TO_I4: - case OP_FCONV_TO_I: code = emit_float_to_int (cfg, code, ins->dreg, ins->sreg1, 4, TRUE); break; case OP_FCONV_TO_U4: diff --git a/src/mono/mono/mini/mini-ppc.c b/src/mono/mono/mini/mini-ppc.c index 8052b7d53b22db..a50ddc6b89cb9d 100644 --- a/src/mono/mono/mini/mini-ppc.c +++ b/src/mono/mono/mini/mini-ppc.c @@ -4159,7 +4159,6 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb) code = emit_float_to_int (cfg, code, ins->dreg, ins->sreg1, 2, FALSE); break; case OP_FCONV_TO_I4: - case OP_FCONV_TO_I: code = emit_float_to_int (cfg, code, ins->dreg, ins->sreg1, 4, TRUE); break; case OP_FCONV_TO_U4: diff --git a/src/mono/mono/mini/mini-runtime.c b/src/mono/mono/mini/mini-runtime.c index e9f466491d9836..c25226725b6b7b 100644 --- a/src/mono/mono/mini/mini-runtime.c +++ b/src/mono/mono/mini/mini-runtime.c @@ -4811,10 +4811,6 @@ register_icalls (void) register_opcode_emulation (OP_FCONV_TO_U1, __emul_fconv_to_u1, mono_icall_sig_uint8_double, mono_fconv_u1, FALSE); register_opcode_emulation (OP_FCONV_TO_U2, __emul_fconv_to_u2, mono_icall_sig_uint16_double, mono_fconv_u2, FALSE); -#if TARGET_SIZEOF_VOID_P == 4 - register_opcode_emulation (OP_FCONV_TO_I, __emul_fconv_to_i, mono_icall_sig_int32_double, mono_fconv_i4, FALSE); -#endif - register_opcode_emulation (OP_FBEQ, __emul_fcmp_eq, mono_icall_sig_uint32_double_double, mono_fcmp_eq, FALSE); register_opcode_emulation (OP_FBLT, __emul_fcmp_lt, mono_icall_sig_uint32_double_double, mono_fcmp_lt, FALSE); register_opcode_emulation (OP_FBGT, __emul_fcmp_gt, mono_icall_sig_uint32_double_double, mono_fcmp_gt, FALSE); diff --git a/src/mono/mono/mini/mini-s390x.c b/src/mono/mono/mini/mini-s390x.c index af7fb6e54e93c6..e2e9369ac16ee5 100644 --- a/src/mono/mono/mini/mini-s390x.c +++ b/src/mono/mono/mini/mini-s390x.c @@ -4296,7 +4296,6 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb) } break; case OP_FCONV_TO_I8: - case OP_FCONV_TO_I: s390_cgdbr (code, ins->dreg, 5, ins->sreg1); break; case OP_FCONV_TO_U8: @@ -4351,7 +4350,6 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb) } break; case OP_RCONV_TO_I8: - case OP_RCONV_TO_I: s390_cgebr (code, ins->dreg, 5, ins->sreg1); break; case OP_RCONV_TO_U8: diff --git a/src/mono/mono/mini/mini-sparc.c b/src/mono/mono/mini/mini-sparc.c index 954fab8e03bec0..95983c02a6a0c9 100644 --- a/src/mono/mono/mini/mini-sparc.c +++ b/src/mono/mono/mini/mini-sparc.c @@ -3393,9 +3393,6 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb) case OP_FCONV_TO_U1: case OP_FCONV_TO_I2: case OP_FCONV_TO_U2: -#ifndef SPARCV9 - case OP_FCONV_TO_I: -#endif case OP_FCONV_TO_I4: case OP_FCONV_TO_U4: { MonoInst *spill = cfg->arch.float_spill_slot; diff --git a/src/mono/mono/mini/mini-x86.c b/src/mono/mono/mini/mini-x86.c index e94494327c39ce..add8373f0f8cec 100644 --- a/src/mono/mono/mini/mini-x86.c +++ b/src/mono/mono/mini/mini-x86.c @@ -3510,7 +3510,6 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb) code = emit_float_to_int (cfg, code, ins->dreg, 2, FALSE); break; case OP_FCONV_TO_I4: - case OP_FCONV_TO_I: code = emit_float_to_int (cfg, code, ins->dreg, 4, TRUE); break; case OP_FCONV_TO_I8: @@ -6155,7 +6154,6 @@ mono_arch_decompose_opts (MonoCompile *cfg, MonoInst *ins) case OP_FCONV_TO_I2: case OP_FCONV_TO_U2: case OP_FCONV_TO_I4: - case OP_FCONV_TO_I: break; default: return;