vcpkg/ports/ncnn/fix_uwp.patch
jim wang 19444600bf
[ncnn] Update to 20240102 (#35978)
Fixes https://github.com/microsoft/vcpkg/issues/35977

- [X] Changes comply with the [maintainer
guide](https://github.com/microsoft/vcpkg-docs/blob/main/vcpkg/contributing/maintainer-guide.md)
- [X] SHA512s are updated for each updated download
- [ ] ~~The "supports" clause reflects platforms that may be fixed by
this new version~~
- [ ] ~~Any fixed [CI
baseline](https://github.com/microsoft/vcpkg/blob/master/scripts/ci.baseline.txt)
entries are removed from that file.~~
- [ ] ~~Any patches that are no longer applied are deleted from the
port's directory.~~
- [X] The version database is fixed by rerunning `./vcpkg x-add-version
--all` and committing the result.
- [X] Only one version is added to each modified port's versions file.


Usage test pass with following triplets:

```
x86-windows
x64-windows
x64-windows-static
```
2024-02-21 22:12:25 -08:00

43 lines
1.6 KiB
Diff

diff --git a/src/cpu.cpp b/src/cpu.cpp
index e56cd67..3ca1189 100644
--- a/src/cpu.cpp
+++ b/src/cpu.cpp
@@ -184,6 +184,13 @@ static int g_cpu_is_arm_a53_a55;
#endif // defined __ANDROID__ || defined __linux__
#if defined _WIN32
+#if WINAPI_FAMILY == WINAPI_FAMILY_APP
+static int detectisa(const void* /*some_inst*/)
+{
+ // uwp does not support seh :(
+ return 0;
+}
+#else // WINAPI_FAMILY == WINAPI_FAMILY_APP
static int g_sigill_caught = 0;
static jmp_buf g_jmpbuf;
@@ -213,6 +220,7 @@ static int detectisa(const void* some_inst)
return g_sigill_caught ? 0 : 1;
}
+#endif // WINAPI_FAMILY == WINAPI_FAMILY_APP
#if defined(__i386__) || defined(__x86_64__) || defined(_M_IX86) || defined(_M_X64)
#ifdef _MSC_VER
@@ -1966,12 +1974,12 @@ static void initialize_global_cpu_info()
#if defined _WIN32
#if __arm__
- g_cpu_support_arm_neon = detectisa(some_neon);
+ g_cpu_support_arm_neon = 1; // all modern windows arm devices have neon
g_cpu_support_arm_vfpv4 = detectisa(some_vfpv4);
#if __aarch64__
g_cpu_support_arm_cpuid = detectisa(some_cpuid);
- g_cpu_support_arm_asimdhp = detectisa(some_asimdhp);
- g_cpu_support_arm_asimddp = detectisa(some_asimddp);
+ g_cpu_support_arm_asimdhp = detectisa(some_asimdhp) || IsProcessorFeaturePresent(43); // dp implies hp
+ g_cpu_support_arm_asimddp = detectisa(some_asimddp) || IsProcessorFeaturePresent(43); // 43 is PF_ARM_V82_DP_INSTRUCTIONS_AVAILABLE
g_cpu_support_arm_asimdfhm = detectisa(some_asimdfhm);
g_cpu_support_arm_bf16 = detectisa(some_bf16);
g_cpu_support_arm_i8mm = detectisa(some_i8mm);