Message ID | ZneN_1p9ILDeLQkN@humpty.home.comstyle.com |
---|---|
State | New |
Headers | show |
Series | [FFmpeg-devel] aarch64: Add OpenBSD runtime detection of dotprod and i8mm using sysctl | expand |
Context | Check | Description |
---|---|---|
yinshiyou/make_loongarch64 | success | Make finished |
yinshiyou/make_fate_loongarch64 | success | Make fate finished |
andriy/make_x86 | success | Make finished |
andriy/make_fate_x86 | success | Make fate finished |
On Sat, 22 Jun 2024, Brad Smith wrote: > [PATCH] aarch64: Add OpenBSD runtime detection of dotprod and i8mm using sysctl > > Signed-off-by: Brad Smith <brad@comstyle.com> > --- > libavutil/aarch64/cpu.c | 35 +++++++++++++++++++++++++++++++++++ > 1 file changed, 35 insertions(+) > > diff --git a/libavutil/aarch64/cpu.c b/libavutil/aarch64/cpu.c > index 196bdaf6b0..40fcc8d1ff 100644 > --- a/libavutil/aarch64/cpu.c > +++ b/libavutil/aarch64/cpu.c > @@ -65,6 +65,41 @@ static int detect_flags(void) > return flags; > } > > +#elif defined(__OpenBSD__) > +#include <machine/armreg.h> > +#include <machine/cpu.h> > +#include <sys/types.h> > +#include <sys/sysctl.h> > + > +static int detect_flags(void) > +{ > + int flags = 0; > + int mib[2]; > + uint64_t isar0; > + uint64_t isar1; > + size_t len; > + > + mib[0] = CTL_MACHDEP; > + mib[1] = CPU_ID_AA64ISAR0; > + len = sizeof(isar0); > + if (sysctl(mib, 2, &isar0, &len, NULL, 0) != -1) { > + if (ID_AA64ISAR0_DP(isar0) >= ID_AA64ISAR0_DP_IMPL) > + flags |= AV_CPU_FLAG_DOTPROD; > + } > + > + mib[0] = CTL_MACHDEP; > + mib[1] = CPU_ID_AA64ISAR1; > + len = sizeof(isar1); > + if (sysctl(mib, 2, &isar1, &len, NULL, 0) != -1) { > +#ifdef ID_AA64ISAR1_I8MM_IMPL > + if (ID_AA64ISAR1_I8MM(isar1) >= ID_AA64ISAR1_I8MM_IMPL) > + flags |= AV_CPU_FLAG_I8MM; > +#endif > + } > + > + return flags; > +} > + > #elif defined(_WIN32) > #include <windows.h> This LGTM. Although, in https://code.videolan.org/videolan/dav1d/-/merge_requests/1673 you wrapped most of this in an #ifdef CPU_ID_AA64ISAR0, so would that be useful here too? Feel free to push either with or without that. // Martin
On 2024-06-24 4:15 a.m., Martin Storsjö wrote: > On Sat, 22 Jun 2024, Brad Smith wrote: > >> [PATCH] aarch64: Add OpenBSD runtime detection of dotprod and i8mm >> using sysctl >> >> Signed-off-by: Brad Smith <brad@comstyle.com> >> --- >> libavutil/aarch64/cpu.c | 35 +++++++++++++++++++++++++++++++++++ >> 1 file changed, 35 insertions(+) >> >> diff --git a/libavutil/aarch64/cpu.c b/libavutil/aarch64/cpu.c >> index 196bdaf6b0..40fcc8d1ff 100644 >> --- a/libavutil/aarch64/cpu.c >> +++ b/libavutil/aarch64/cpu.c >> @@ -65,6 +65,41 @@ static int detect_flags(void) >> return flags; >> } >> >> +#elif defined(__OpenBSD__) >> +#include <machine/armreg.h> >> +#include <machine/cpu.h> >> +#include <sys/types.h> >> +#include <sys/sysctl.h> >> + >> +static int detect_flags(void) >> +{ >> + int flags = 0; >> + int mib[2]; >> + uint64_t isar0; >> + uint64_t isar1; >> + size_t len; >> + >> + mib[0] = CTL_MACHDEP; >> + mib[1] = CPU_ID_AA64ISAR0; >> + len = sizeof(isar0); >> + if (sysctl(mib, 2, &isar0, &len, NULL, 0) != -1) { >> + if (ID_AA64ISAR0_DP(isar0) >= ID_AA64ISAR0_DP_IMPL) >> + flags |= AV_CPU_FLAG_DOTPROD; >> + } >> + >> + mib[0] = CTL_MACHDEP; >> + mib[1] = CPU_ID_AA64ISAR1; >> + len = sizeof(isar1); >> + if (sysctl(mib, 2, &isar1, &len, NULL, 0) != -1) { >> +#ifdef ID_AA64ISAR1_I8MM_IMPL >> + if (ID_AA64ISAR1_I8MM(isar1) >= ID_AA64ISAR1_I8MM_IMPL) >> + flags |= AV_CPU_FLAG_I8MM; >> +#endif >> + } >> + >> + return flags; >> +} >> + >> #elif defined(_WIN32) >> #include <windows.h> > > This LGTM. Although, in > https://code.videolan.org/videolan/dav1d/-/merge_requests/1673 you > wrapped most of this in an #ifdef CPU_ID_AA64ISAR0, so would that be > useful here too? That would be a good idea. I will do the same. Thanks. > Feel free to push either with or without that. > > // Martin > > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
diff --git a/libavutil/aarch64/cpu.c b/libavutil/aarch64/cpu.c index 196bdaf6b0..40fcc8d1ff 100644 --- a/libavutil/aarch64/cpu.c +++ b/libavutil/aarch64/cpu.c @@ -65,6 +65,41 @@ static int detect_flags(void) return flags; } +#elif defined(__OpenBSD__) +#include <machine/armreg.h> +#include <machine/cpu.h> +#include <sys/types.h> +#include <sys/sysctl.h> + +static int detect_flags(void) +{ + int flags = 0; + int mib[2]; + uint64_t isar0; + uint64_t isar1; + size_t len; + + mib[0] = CTL_MACHDEP; + mib[1] = CPU_ID_AA64ISAR0; + len = sizeof(isar0); + if (sysctl(mib, 2, &isar0, &len, NULL, 0) != -1) { + if (ID_AA64ISAR0_DP(isar0) >= ID_AA64ISAR0_DP_IMPL) + flags |= AV_CPU_FLAG_DOTPROD; + } + + mib[0] = CTL_MACHDEP; + mib[1] = CPU_ID_AA64ISAR1; + len = sizeof(isar1); + if (sysctl(mib, 2, &isar1, &len, NULL, 0) != -1) { +#ifdef ID_AA64ISAR1_I8MM_IMPL + if (ID_AA64ISAR1_I8MM(isar1) >= ID_AA64ISAR1_I8MM_IMPL) + flags |= AV_CPU_FLAG_I8MM; +#endif + } + + return flags; +} + #elif defined(_WIN32) #include <windows.h>
[PATCH] aarch64: Add OpenBSD runtime detection of dotprod and i8mm using sysctl Signed-off-by: Brad Smith <brad@comstyle.com> --- libavutil/aarch64/cpu.c | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+)