diff --git a/src/mono/mono/mini/mini-amd64.c b/src/mono/mono/mini/mini-amd64.c index 9d547cf2f4cd91..ed40ecadae0a6f 100644 --- a/src/mono/mono/mini/mini-amd64.c +++ b/src/mono/mono/mini/mini-amd64.c @@ -988,7 +988,8 @@ get_call_info (MonoMemPool *mp, MonoMethodSignature *sig) /* * We need to set this even when sig->pinvoke is FALSE, because the `cinfo` gets copied to the * `cfg->arch` on the first pass. However, later in `amd64_handle_swift_return_buffer_reg` we - * condition the Swift return buffer handling only to P/Invoke calls. + * condition the Swift return buffer handling only to P/Invoke calls. This however can trigger + * a false positive in some scenarios where the Swift return buffer is not needed. */ cinfo->need_swift_return_buffer = TRUE; } @@ -1286,17 +1287,17 @@ arg_get_val (CallContext *ccontext, ArgInfo *ainfo, gpointer dest) int storage_type = ainfo->pair_storage [k]; int reg_storage = ainfo->pair_regs [k]; switch (storage_type) { - case ArgInIReg: - *(gsize*)(storage + ainfo->offsets [k]) = ccontext->gregs [reg_storage]; - break; - case ArgInFloatSSEReg: - *(float*)(storage + ainfo->offsets [k]) = *(float*)&ccontext->fregs [reg_storage]; - break; - case ArgInDoubleSSEReg: - *(double*)(storage + ainfo->offsets [k]) = ccontext->fregs [reg_storage]; - break; - default: - g_assert_not_reached (); + case ArgInIReg: + *(gsize*)(storage + ainfo->offsets [k]) = ccontext->gregs [reg_storage]; + break; + case ArgInFloatSSEReg: + *(float*)(storage + ainfo->offsets [k]) = *(float*)&ccontext->fregs [reg_storage]; + break; + case ArgInDoubleSSEReg: + *(double*)(storage + ainfo->offsets [k]) = ccontext->fregs [reg_storage]; + break; + default: + g_assert_not_reached (); } } break; @@ -1314,11 +1315,13 @@ arg_set_val (CallContext *ccontext, ArgInfo *ainfo, gpointer src) { g_assert (arg_need_temp (ainfo)); - host_mgreg_t *src_cast = (host_mgreg_t*)src; - for (int k = 0; k < ainfo->nregs; k++) { - int storage_type = ainfo->pair_storage [k]; - int reg_storage = ainfo->pair_regs [k]; - switch (storage_type) { + switch (ainfo->storage) { + case ArgValuetypeInReg: { + host_mgreg_t *src_cast = (host_mgreg_t*)src; + for (int k = 0; k < ainfo->nregs; k++) { + int storage_type = ainfo->pair_storage [k]; + int reg_storage = ainfo->pair_regs [k]; + switch (storage_type) { case ArgInIReg: ccontext->gregs [reg_storage] = *src_cast; break; @@ -1328,9 +1331,38 @@ arg_set_val (CallContext *ccontext, ArgInfo *ainfo, gpointer src) break; default: g_assert_not_reached (); + } + src_cast++; } - src_cast++; + break; } +#ifdef MONO_ARCH_HAVE_SWIFTCALL + case ArgSwiftValuetypeLoweredRet: { + char *storage = (char*)src; + for (int k = 0; k < ainfo->nregs; k++) { + int storage_type = ainfo->pair_storage [k]; + int reg_storage = ainfo->pair_regs [k]; + switch (storage_type) { + case ArgInIReg: + ccontext->gregs [reg_storage] = *(gsize*)(storage + ainfo->offsets [k]); + break; + case ArgInFloatSSEReg: + *(float*)&ccontext->fregs [reg_storage] = *(float*)(storage + ainfo->offsets [k]); + break; + case ArgInDoubleSSEReg: + ccontext->fregs [reg_storage] = *(double*)(storage + ainfo->offsets [k]); + break; + default: + g_assert_not_reached (); + } + } + break; + } +#endif /* MONO_ARCH_HAVE_SWIFTCALL */ + default: + g_assert_not_reached (); + } + } gpointer @@ -2368,6 +2400,9 @@ mono_arch_get_llvm_call_info (MonoCompile *cfg, MonoMethodSignature *sig) linfo->ret.storage = LLVMArgVtypeRetAddr; linfo->vret_arg_index = cinfo->vret_arg_index; break; + case ArgSwiftValuetypeLoweredRet: + linfo->ret.storage = LLVMArgNone; // LLVM compilation of pinvoke wrappers is not supported, see emit_method_inner in mini-llvm.c + break; default: g_assert_not_reached (); break; @@ -2434,6 +2469,9 @@ mono_arch_get_llvm_call_info (MonoCompile *cfg, MonoMethodSignature *sig) case ArgValuetypeAddrOnStack: linfo->args [i].storage = LLVMArgVtypeAddr; break; + case ArgSwiftError: + linfo->args [i].storage = LLVMArgNone; // LLVM compilation of pinvoke wrappers is not supported, see emit_method_inner in mini-llvm.c + break; default: cfg->exception_message = g_strdup ("ainfo->storage"); cfg->disable_llvm = TRUE; @@ -8393,8 +8431,19 @@ MONO_RESTORE_WARNING if (sig->ret->type != MONO_TYPE_VOID) { /* Save volatile arguments to the stack */ - if (cfg->vret_addr && (cfg->vret_addr->opcode != OP_REGVAR)) - amd64_mov_membase_reg (code, cfg->vret_addr->inst_basereg, cfg->vret_addr->inst_offset, cinfo->ret.reg, 8); + if (cfg->vret_addr && (cfg->vret_addr->opcode != OP_REGVAR)) { +#ifdef MONO_ARCH_HAVE_SWIFTCALL + if (mono_method_signature_has_ext_callconv (sig, MONO_EXT_CALLCONV_SWIFTCALL) && sig->pinvoke && + cfg->method->wrapper_type == MONO_WRAPPER_NATIVE_TO_MANAGED && + cfg->arch.cinfo->need_swift_return_buffer && cinfo->ret.reg == AMD64_R10) { + // Save the return buffer passed by the Swift caller + amd64_mov_membase_reg (code, cfg->vret_addr->inst_basereg, cfg->vret_addr->inst_offset, SWIFT_RETURN_BUFFER_REG, 8); + } else +#endif + { + amd64_mov_membase_reg (code, cfg->vret_addr->inst_basereg, cfg->vret_addr->inst_offset, cinfo->ret.reg, 8); + } + } } #ifdef MONO_ARCH_HAVE_SWIFTCALL @@ -8680,7 +8729,8 @@ mono_arch_emit_epilog (MonoCompile *cfg) /* Load returned vtypes into registers if needed */ cinfo = cfg->arch.cinfo; - if (cinfo->ret.storage == ArgValuetypeInReg) { + switch (cinfo->ret.storage) { + case ArgValuetypeInReg: { ArgInfo *ainfo = &cinfo->ret; MonoInst *inst = cfg->ret; @@ -8701,6 +8751,33 @@ mono_arch_emit_epilog (MonoCompile *cfg) g_assert_not_reached (); } } + break; + } +#ifdef MONO_ARCH_HAVE_SWIFTCALL + case ArgSwiftValuetypeLoweredRet: { + if (cfg->method->wrapper_type == MONO_WRAPPER_NATIVE_TO_MANAGED) { + ArgInfo *ainfo = &cinfo->ret; + MonoInst *ins = cfg->ret; + + for (int i = 0; i < ainfo->nregs; i++) { + switch (ainfo->pair_storage [i]) { + case ArgInIReg: + amd64_mov_reg_membase (code, ainfo->pair_regs [i], ins->inst_basereg, ins->inst_offset + ainfo->offsets [i], sizeof (target_mgreg_t)); + break; + case ArgInFloatSSEReg: + amd64_movss_reg_membase (code, ainfo->pair_regs [i], ins->inst_basereg, ins->inst_offset + ainfo->offsets [i]); + break; + case ArgInDoubleSSEReg: + amd64_movsd_reg_membase (code, ainfo->pair_regs [i], ins->inst_basereg, ins->inst_offset + ainfo->offsets [i]); + break; + default: + g_assert_not_reached (); + } + } + } + break; + } +#endif /* MONO_ARCH_HAVE_SWIFTCALL */ } if (cfg->arch.omit_fp) { diff --git a/src/mono/mono/mini/mini-arm64.c b/src/mono/mono/mini/mini-arm64.c index 50106c3c62e12e..903a8bc9965f73 100644 --- a/src/mono/mono/mini/mini-arm64.c +++ b/src/mono/mono/mini/mini-arm64.c @@ -2024,22 +2024,21 @@ arg_get_val (CallContext *ccontext, ArgInfo *ainfo, gpointer dest) } #ifdef MONO_ARCH_HAVE_SWIFTCALL case ArgSwiftVtypeLoweredRet: { - int i; int gr = 0, fr = 0; // We can start from 0 since we are handling only returns char *storage = (char*)dest; - for (i = 0; i < ainfo->nregs; ++i) { - switch (ainfo->struct_storage [i]) { - case ArgInIReg: - *(gsize*)(storage + ainfo->offsets [i]) = ccontext->gregs [gr++]; - break; - case ArgInFReg: - *(double*)(storage + ainfo->offsets [i]) = ccontext->fregs [fr++]; - break; - case ArgInFRegR4: - *(float*)(storage + ainfo->offsets [i]) = *(float*)&ccontext->fregs [fr++]; - break; - default: - g_assert_not_reached (); + for (int k = 0; k < ainfo->nregs; ++k) { + switch (ainfo->struct_storage [k]) { + case ArgInIReg: + *(gsize*)(storage + ainfo->offsets [k]) = ccontext->gregs [gr++]; + break; + case ArgInFReg: + *(double*)(storage + ainfo->offsets [k]) = ccontext->fregs [fr++]; + break; + case ArgInFRegR4: + *(float*)(storage + ainfo->offsets [k]) = *(float*)&ccontext->fregs [fr++]; + break; + default: + g_assert_not_reached (); } } break; @@ -2055,10 +2054,39 @@ arg_set_val (CallContext *ccontext, ArgInfo *ainfo, gpointer src) { g_assert (arg_need_temp (ainfo)); - float *src_float = (float*)src; - for (int k = 0; k < ainfo->nregs; k++) { - *(float*)&ccontext->fregs [ainfo->reg + k] = *src_float; - src_float++; + switch (ainfo->storage) { + case ArgHFA: { + float *src_float = (float*)src; + for (int k = 0; k < ainfo->nregs; k++) { + *(float*)&ccontext->fregs [ainfo->reg + k] = *src_float; + src_float++; + } + break; + } +#ifdef MONO_ARCH_HAVE_SWIFTCALL + case ArgSwiftVtypeLoweredRet: { + int gr = 0, fr = 0; // We can start from 0 since we are handling only returns + char *storage = (char*)src; + for (int k = 0; k < ainfo->nregs; k++) { + switch (ainfo->struct_storage [k]) { + case ArgInIReg: + ccontext->gregs [gr++] = *(gsize*)(storage + ainfo->offsets [k]); + break; + case ArgInFReg: + ccontext->fregs [fr++] = *(double*)(storage + ainfo->offsets [k]); + break; + case ArgInFRegR4: + *(float*)&ccontext->fregs [fr++] = *(float*)(storage + ainfo->offsets [k]); + break; + default: + g_assert_not_reached (); + } + } + break; + } +#endif /* MONO_ARCH_HAVE_SWIFTCALL */ + default: + g_assert_not_reached (); } } @@ -3093,7 +3121,7 @@ mono_arch_get_llvm_call_info (MonoCompile *cfg, MonoMethodSignature *sig) linfo->ret.esize = cinfo->ret.esize; break; case ArgSwiftVtypeLoweredRet: - // LLVM compilation of P/Invoke wrappers is not supported + linfo->ret.storage = LLVMArgNone; // LLVM compilation of pinvoke wrappers is not supported, see emit_method_inner in mini-llvm.c break; default: g_assert_not_reached (); @@ -3160,7 +3188,7 @@ mono_arch_get_llvm_call_info (MonoCompile *cfg, MonoMethodSignature *sig) lainfo->storage = LLVMArgVtypeInSIMDReg; break; case ArgSwiftError: - // LLVM compilation of P/Invoke wrappers is not supported + lainfo->storage = LLVMArgNone; // LLVM compilation of pinvoke wrappers is not supported, see emit_method_inner in mini-llvm.c break; default: g_assert_not_reached (); @@ -6486,6 +6514,30 @@ mono_arch_emit_epilog (MonoCompile *cfg) } break; } +#ifdef MONO_ARCH_HAVE_SWIFTCALL + case ArgSwiftVtypeLoweredRet: { + if (cfg->method->wrapper_type == MONO_WRAPPER_NATIVE_TO_MANAGED) { + MonoInst *ins = cfg->ret; + int gr = 0, fr = 0; // We can start from 0 since we are handling only returns + for (int i = 0; i < cinfo->ret.nregs; ++i) { + switch (cinfo->ret.struct_storage [i]) { + case ArgInIReg: + code = emit_ldrx (code, gr++, ins->inst_basereg, GTMREG_TO_INT (ins->inst_offset + cinfo->ret.offsets [i])); + break; + case ArgInFRegR4: + code = emit_ldrfpw (code, fr++, ins->inst_basereg, GTMREG_TO_INT (ins->inst_offset + cinfo->ret.offsets [i])); + break; + case ArgInFReg: + code = emit_ldrfpx (code, fr++, ins->inst_basereg, GTMREG_TO_INT (ins->inst_offset + cinfo->ret.offsets [i])); + break; + default: + g_assert_not_reached (); + } + } + } + break; + } +#endif /* MONO_ARCH_HAVE_SWIFTCALL */ default: break; } diff --git a/src/tests/Interop/Swift/SwiftCallbackAbiStress/SwiftCallbackAbiStress.cs b/src/tests/Interop/Swift/SwiftCallbackAbiStress/SwiftCallbackAbiStress.cs index e94c5c37570c4f..cd00caec4667f4 100644 --- a/src/tests/Interop/Swift/SwiftCallbackAbiStress/SwiftCallbackAbiStress.cs +++ b/src/tests/Interop/Swift/SwiftCallbackAbiStress/SwiftCallbackAbiStress.cs @@ -375,7 +375,6 @@ private static F3_Ret SwiftCallbackFunc3Callback(F3_S0 a0, float a1, ushort a2, } [Fact] - [SkipOnMono("Struct lowering for reverse pinvokes returns not supported on Mono")] public static void TestSwiftCallbackFunc3() { Console.Write("Running SwiftCallbackFunc3: "); @@ -461,7 +460,6 @@ private static F4_Ret SwiftCallbackFunc4Callback(double a0, F4_S0 a1, byte a2, i } [Fact] - [SkipOnMono("Struct lowering for reverse pinvokes returns not supported on Mono")] public static void TestSwiftCallbackFunc4() { Console.Write("Running SwiftCallbackFunc4: "); @@ -590,7 +588,6 @@ private static F5_Ret SwiftCallbackFunc5Callback(byte a0, short a1, ulong a2, nu } [Fact] - [SkipOnMono("Struct lowering for reverse pinvokes returns not supported on Mono")] public static void TestSwiftCallbackFunc5() { Console.Write("Running SwiftCallbackFunc5: "); @@ -715,7 +712,6 @@ private static F6_Ret SwiftCallbackFunc6Callback(float a0, F6_S0 a1, long a2, sb } [Fact] - [SkipOnMono("Struct lowering for reverse pinvokes returns not supported on Mono")] public static void TestSwiftCallbackFunc6() { Console.Write("Running SwiftCallbackFunc6: "); @@ -870,7 +866,6 @@ private static F8_Ret SwiftCallbackFunc8Callback(F8_S0 a0, F8_S1 a1, SwiftSelf s } [Fact] - [SkipOnMono("Struct lowering for reverse pinvokes returns not supported on Mono")] public static void TestSwiftCallbackFunc8() { Console.Write("Running SwiftCallbackFunc8: "); @@ -1066,7 +1061,6 @@ private static F10_Ret SwiftCallbackFunc10Callback(short a0, SwiftSelf self) } [Fact] - [SkipOnMono("Struct lowering for reverse pinvokes returns not supported on Mono")] public static void TestSwiftCallbackFunc10() { Console.Write("Running SwiftCallbackFunc10: "); @@ -1175,7 +1169,6 @@ private static F11_Ret SwiftCallbackFunc11Callback(uint a0, nuint a1, ulong a2, } [Fact] - [SkipOnMono("Struct lowering for reverse pinvokes returns not supported on Mono")] public static void TestSwiftCallbackFunc11() { Console.Write("Running SwiftCallbackFunc11: "); @@ -1258,7 +1251,6 @@ private static F12_Ret SwiftCallbackFunc12Callback(F12_S0 a0, short a1, ulong a2 } [Fact] - [SkipOnMono("Struct lowering for reverse pinvokes returns not supported on Mono")] public static void TestSwiftCallbackFunc12() { Console.Write("Running SwiftCallbackFunc12: "); @@ -1750,7 +1742,6 @@ private static F18_Ret SwiftCallbackFunc18Callback(F18_S0 a0, F18_S1 a1, F18_S2 } [Fact] - [SkipOnMono("Struct lowering for reverse pinvokes returns not supported on Mono")] public static void TestSwiftCallbackFunc18() { Console.Write("Running SwiftCallbackFunc18: "); @@ -1864,7 +1855,6 @@ private static F19_Ret SwiftCallbackFunc19Callback(long a0, byte a1, F19_S0 a2, } [Fact] - [SkipOnMono("Struct lowering for reverse pinvokes returns not supported on Mono")] public static void TestSwiftCallbackFunc19() { Console.Write("Running SwiftCallbackFunc19: "); @@ -1970,7 +1960,6 @@ private static F20_Ret SwiftCallbackFunc20Callback(F20_S0 a0, F20_S1 a1, float a } [Fact] - [SkipOnMono("Struct lowering for reverse pinvokes returns not supported on Mono")] public static void TestSwiftCallbackFunc20() { Console.Write("Running SwiftCallbackFunc20: "); @@ -2045,7 +2034,6 @@ private static F21_Ret SwiftCallbackFunc21Callback(int a0, short a1, F21_S0 a2, } [Fact] - [SkipOnMono("Struct lowering for reverse pinvokes returns not supported on Mono")] public static void TestSwiftCallbackFunc21() { Console.Write("Running SwiftCallbackFunc21: "); @@ -2169,7 +2157,6 @@ private static F22_Ret SwiftCallbackFunc22Callback(int a0, F22_S0 a1, F22_S1 a2, } [Fact] - [SkipOnMono("Struct lowering for reverse pinvokes returns not supported on Mono")] public static void TestSwiftCallbackFunc22() { Console.Write("Running SwiftCallbackFunc22: "); @@ -2428,7 +2415,6 @@ private static F25_Ret SwiftCallbackFunc25Callback(F25_S0 a0, ushort a1, nuint a } [Fact] - [SkipOnMono("Struct lowering for reverse pinvokes returns not supported on Mono")] public static void TestSwiftCallbackFunc25() { Console.Write("Running SwiftCallbackFunc25: "); @@ -2525,7 +2511,6 @@ private static F26_Ret SwiftCallbackFunc26Callback(sbyte a0, byte a1, uint a2, F } [Fact] - [SkipOnMono("Struct lowering for reverse pinvokes returns not supported on Mono")] public static void TestSwiftCallbackFunc26() { Console.Write("Running SwiftCallbackFunc26: "); @@ -2716,7 +2701,6 @@ private static F28_Ret SwiftCallbackFunc28Callback(uint a0, ushort a1, sbyte a2, } [Fact] - [SkipOnMono("Struct lowering for reverse pinvokes returns not supported on Mono")] public static void TestSwiftCallbackFunc28() { Console.Write("Running SwiftCallbackFunc28: "); @@ -2844,7 +2828,6 @@ private static F29_Ret SwiftCallbackFunc29Callback(F29_S0 a0, nint a1, ulong a2, } [Fact] - [SkipOnMono("Struct lowering for reverse pinvokes returns not supported on Mono")] public static void TestSwiftCallbackFunc29() { Console.Write("Running SwiftCallbackFunc29: "); @@ -2998,7 +2981,6 @@ private static F31_Ret SwiftCallbackFunc31Callback(F31_S0 a0, double a1, SwiftSe } [Fact] - [SkipOnMono("Struct lowering for reverse pinvokes returns not supported on Mono")] public static void TestSwiftCallbackFunc31() { Console.Write("Running SwiftCallbackFunc31: "); @@ -3052,7 +3034,6 @@ private static F32_Ret SwiftCallbackFunc32Callback(ushort a0, short a1, SwiftSel } [Fact] - [SkipOnMono("Struct lowering for reverse pinvokes returns not supported on Mono")] public static void TestSwiftCallbackFunc32() { Console.Write("Running SwiftCallbackFunc32: "); @@ -3432,7 +3413,6 @@ private static F37_Ret SwiftCallbackFunc37Callback(ulong a0, F37_S0 a1, double a } [Fact] - [SkipOnMono("Struct lowering for reverse pinvokes returns not supported on Mono")] public static void TestSwiftCallbackFunc37() { Console.Write("Running SwiftCallbackFunc37: "); @@ -3750,7 +3730,6 @@ private static F41_Ret SwiftCallbackFunc41Callback(F41_S0 a0, SwiftSelf self) } [Fact] - [SkipOnMono("Struct lowering for reverse pinvokes returns not supported on Mono")] public static void TestSwiftCallbackFunc41() { Console.Write("Running SwiftCallbackFunc41: "); @@ -3869,7 +3848,6 @@ private static F43_Ret SwiftCallbackFunc43Callback(F43_S0 a0, F43_S1 a1, SwiftSe } [Fact] - [SkipOnMono("Struct lowering for reverse pinvokes returns not supported on Mono")] public static void TestSwiftCallbackFunc43() { Console.Write("Running SwiftCallbackFunc43: "); @@ -3974,7 +3952,6 @@ private static F44_Ret SwiftCallbackFunc44Callback(double a0, F44_S0 a1, F44_S1 } [Fact] - [SkipOnMono("Struct lowering for reverse pinvokes returns not supported on Mono")] public static void TestSwiftCallbackFunc44() { Console.Write("Running SwiftCallbackFunc44: "); @@ -4059,7 +4036,6 @@ private static F45_Ret SwiftCallbackFunc45Callback(F45_S0 a0, F45_S1 a1, byte a2 } [Fact] - [SkipOnMono("Struct lowering for reverse pinvokes returns not supported on Mono")] public static void TestSwiftCallbackFunc45() { Console.Write("Running SwiftCallbackFunc45: "); @@ -4119,7 +4095,6 @@ private static F46_Ret SwiftCallbackFunc46Callback(nint a0, nuint a1, ushort a2, } [Fact] - [SkipOnMono("Struct lowering for reverse pinvokes returns not supported on Mono")] public static void TestSwiftCallbackFunc46() { Console.Write("Running SwiftCallbackFunc46: "); @@ -4236,7 +4211,6 @@ private static F47_Ret SwiftCallbackFunc47Callback(nint a0, float a1, uint a2, F } [Fact] - [SkipOnMono("Struct lowering for reverse pinvokes returns not supported on Mono")] public static void TestSwiftCallbackFunc47() { Console.Write("Running SwiftCallbackFunc47: "); @@ -4380,7 +4354,6 @@ private static F49_Ret SwiftCallbackFunc49Callback(F49_S0 a0, long a1, SwiftSelf } [Fact] - [SkipOnMono("Struct lowering for reverse pinvokes returns not supported on Mono")] public static void TestSwiftCallbackFunc49() { Console.Write("Running SwiftCallbackFunc49: "); @@ -4558,7 +4531,6 @@ private static F51_Ret SwiftCallbackFunc51Callback(short a0, nuint a1, F51_S0 a2 } [Fact] - [SkipOnMono("Struct lowering for reverse pinvokes returns not supported on Mono")] public static void TestSwiftCallbackFunc51() { Console.Write("Running SwiftCallbackFunc51: "); @@ -4632,7 +4604,6 @@ private static F52_Ret SwiftCallbackFunc52Callback(nint a0, F52_S0 a1, short a2, } [Fact] - [SkipOnMono("Struct lowering for reverse pinvokes returns not supported on Mono")] public static void TestSwiftCallbackFunc52() { Console.Write("Running SwiftCallbackFunc52: "); @@ -4792,7 +4763,6 @@ private static F53_Ret SwiftCallbackFunc53Callback(F53_S0 a0, byte a1, long a2, } [Fact] - [SkipOnMono("Struct lowering for reverse pinvokes returns not supported on Mono")] public static void TestSwiftCallbackFunc53() { Console.Write("Running SwiftCallbackFunc53: "); @@ -4912,7 +4882,6 @@ private static F54_Ret SwiftCallbackFunc54Callback(ushort a0, F54_S0 a1, float a } [Fact] - [SkipOnMono("Struct lowering for reverse pinvokes returns not supported on Mono")] public static void TestSwiftCallbackFunc54() { Console.Write("Running SwiftCallbackFunc54: "); @@ -5011,7 +4980,6 @@ private static F55_Ret SwiftCallbackFunc55Callback(F55_S0 a0, long a1, F55_S1 a2 } [Fact] - [SkipOnMono("Struct lowering for reverse pinvokes returns not supported on Mono")] public static void TestSwiftCallbackFunc55() { Console.Write("Running SwiftCallbackFunc55: "); @@ -5146,7 +5114,6 @@ private static F57_Ret SwiftCallbackFunc57Callback(sbyte a0, nuint a1, uint a2, } [Fact] - [SkipOnMono("Struct lowering for reverse pinvokes returns not supported on Mono")] public static void TestSwiftCallbackFunc57() { Console.Write("Running SwiftCallbackFunc57: "); @@ -5467,7 +5434,6 @@ private static F62_Ret SwiftCallbackFunc62Callback(F62_S0 a0, SwiftSelf self) } [Fact] - [SkipOnMono("Struct lowering for reverse pinvokes returns not supported on Mono")] public static void TestSwiftCallbackFunc62() { Console.Write("Running SwiftCallbackFunc62: "); @@ -5594,7 +5560,6 @@ private static F64_Ret SwiftCallbackFunc64Callback(sbyte a0, F64_S0 a1, F64_S1 a } [Fact] - [SkipOnMono("Struct lowering for reverse pinvokes returns not supported on Mono")] public static void TestSwiftCallbackFunc64() { Console.Write("Running SwiftCallbackFunc64: "); @@ -5694,7 +5659,6 @@ private static F65_Ret SwiftCallbackFunc65Callback(F65_S0 a0, short a1, double a } [Fact] - [SkipOnMono("Struct lowering for reverse pinvokes returns not supported on Mono")] public static void TestSwiftCallbackFunc65() { Console.Write("Running SwiftCallbackFunc65: "); @@ -5762,7 +5726,6 @@ private static F66_Ret SwiftCallbackFunc66Callback(long a0, SwiftSelf self) } [Fact] - [SkipOnMono("Struct lowering for reverse pinvokes returns not supported on Mono")] public static void TestSwiftCallbackFunc66() { Console.Write("Running SwiftCallbackFunc66: "); @@ -5970,7 +5933,6 @@ private static F68_Ret SwiftCallbackFunc68Callback(byte a0, float a1, int a2, ni } [Fact] - [SkipOnMono("Struct lowering for reverse pinvokes returns not supported on Mono")] public static void TestSwiftCallbackFunc68() { Console.Write("Running SwiftCallbackFunc68: "); @@ -6070,7 +6032,6 @@ private static F69_Ret SwiftCallbackFunc69Callback(F69_S0 a0, nint a1, int a2, F } [Fact] - [SkipOnMono("Struct lowering for reverse pinvokes returns not supported on Mono")] public static void TestSwiftCallbackFunc69() { Console.Write("Running SwiftCallbackFunc69: "); @@ -6187,7 +6148,6 @@ private static F70_Ret SwiftCallbackFunc70Callback(short a0, byte a1, nint a2, u } [Fact] - [SkipOnMono("Struct lowering for reverse pinvokes returns not supported on Mono")] public static void TestSwiftCallbackFunc70() { Console.Write("Running SwiftCallbackFunc70: "); @@ -6300,7 +6260,6 @@ private static F72_Ret SwiftCallbackFunc72Callback(F72_S0 a0, long a1, sbyte a2, } [Fact] - [SkipOnMono("Struct lowering for reverse pinvokes returns not supported on Mono")] public static void TestSwiftCallbackFunc72() { Console.Write("Running SwiftCallbackFunc72: "); @@ -6552,7 +6511,6 @@ private static F75_Ret SwiftCallbackFunc75Callback(sbyte a0, sbyte a1, sbyte a2, } [Fact] - [SkipOnMono("Struct lowering for reverse pinvokes returns not supported on Mono")] public static void TestSwiftCallbackFunc75() { Console.Write("Running SwiftCallbackFunc75: "); @@ -6751,7 +6709,6 @@ private static F77_Ret SwiftCallbackFunc77Callback(double a0, F77_S0 a1, F77_S1 } [Fact] - [SkipOnMono("Struct lowering for reverse pinvokes returns not supported on Mono")] public static void TestSwiftCallbackFunc77() { Console.Write("Running SwiftCallbackFunc77: "); @@ -6910,7 +6867,6 @@ private static F79_Ret SwiftCallbackFunc79Callback(F79_S0 a0, float a1, SwiftSel } [Fact] - [SkipOnMono("Struct lowering for reverse pinvokes returns not supported on Mono")] public static void TestSwiftCallbackFunc79() { Console.Write("Running SwiftCallbackFunc79: "); @@ -7051,7 +7007,6 @@ private static F81_Ret SwiftCallbackFunc81Callback(byte a0, uint a1, byte a2, F8 } [Fact] - [SkipOnMono("Struct lowering for reverse pinvokes returns not supported on Mono")] public static void TestSwiftCallbackFunc81() { Console.Write("Running SwiftCallbackFunc81: "); @@ -7201,7 +7156,6 @@ private static F83_Ret SwiftCallbackFunc83Callback(sbyte a0, F83_S0 a1, short a2 } [Fact] - [SkipOnMono("Struct lowering for reverse pinvokes returns not supported on Mono")] public static void TestSwiftCallbackFunc83() { Console.Write("Running SwiftCallbackFunc83: "); @@ -7428,7 +7382,6 @@ private static F85_Ret SwiftCallbackFunc85Callback(F85_S0 a0, F85_S1 a1, uint a2 } [Fact] - [SkipOnMono("Struct lowering for reverse pinvokes returns not supported on Mono")] public static void TestSwiftCallbackFunc85() { Console.Write("Running SwiftCallbackFunc85: "); @@ -7533,7 +7486,6 @@ private static F86_Ret SwiftCallbackFunc86Callback(float a0, short a1, nint a2, } [Fact] - [SkipOnMono("Struct lowering for reverse pinvokes returns not supported on Mono")] public static void TestSwiftCallbackFunc86() { Console.Write("Running SwiftCallbackFunc86: "); @@ -7682,7 +7634,6 @@ private static F88_Ret SwiftCallbackFunc88Callback(F88_S0 a0, F88_S1 a1, float a } [Fact] - [SkipOnMono("Struct lowering for reverse pinvokes returns not supported on Mono")] public static void TestSwiftCallbackFunc88() { Console.Write("Running SwiftCallbackFunc88: "); @@ -7752,7 +7703,6 @@ private static F89_Ret SwiftCallbackFunc89Callback(F89_S0 a0, SwiftSelf self) } [Fact] - [SkipOnMono("Struct lowering for reverse pinvokes returns not supported on Mono")] public static void TestSwiftCallbackFunc89() { Console.Write("Running SwiftCallbackFunc89: "); @@ -7861,7 +7811,6 @@ private static F90_Ret SwiftCallbackFunc90Callback(long a0, float a1, F90_S0 a2, } [Fact] - [SkipOnMono("Struct lowering for reverse pinvokes returns not supported on Mono")] public static void TestSwiftCallbackFunc90() { Console.Write("Running SwiftCallbackFunc90: "); @@ -7982,7 +7931,6 @@ private static F91_Ret SwiftCallbackFunc91Callback(F91_S0 a0, short a1, uint a2, } [Fact] - [SkipOnMono("Struct lowering for reverse pinvokes returns not supported on Mono")] public static void TestSwiftCallbackFunc91() { Console.Write("Running SwiftCallbackFunc91: "); @@ -8076,7 +8024,6 @@ private static F92_Ret SwiftCallbackFunc92Callback(uint a0, long a1, F92_S0 a2, } [Fact] - [SkipOnMono("Struct lowering for reverse pinvokes returns not supported on Mono")] public static void TestSwiftCallbackFunc92() { Console.Write("Running SwiftCallbackFunc92: "); @@ -8140,7 +8087,6 @@ private static F93_Ret SwiftCallbackFunc93Callback(nuint a0, ushort a1, double a } [Fact] - [SkipOnMono("Struct lowering for reverse pinvokes returns not supported on Mono")] public static void TestSwiftCallbackFunc93() { Console.Write("Running SwiftCallbackFunc93: "); @@ -8250,7 +8196,6 @@ private static F94_Ret SwiftCallbackFunc94Callback(F94_S0 a0, short a1, F94_S1 a } [Fact] - [SkipOnMono("Struct lowering for reverse pinvokes returns not supported on Mono")] public static void TestSwiftCallbackFunc94() { Console.Write("Running SwiftCallbackFunc94: "); @@ -8340,7 +8285,6 @@ private static F95_Ret SwiftCallbackFunc95Callback(F95_S0 a0, nuint a1, F95_S1 a } [Fact] - [SkipOnMono("Struct lowering for reverse pinvokes returns not supported on Mono")] public static void TestSwiftCallbackFunc95() { Console.Write("Running SwiftCallbackFunc95: "); @@ -8504,7 +8448,6 @@ private static F97_Ret SwiftCallbackFunc97Callback(F97_S0 a0, F97_S1 a1, F97_S2 } [Fact] - [SkipOnMono("Struct lowering for reverse pinvokes returns not supported on Mono")] public static void TestSwiftCallbackFunc97() { Console.Write("Running SwiftCallbackFunc97: ");