From patchwork Fri May 26 08:03:13 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Martin_Storsj=C3=B6?= X-Patchwork-Id: 41833 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:c51c:b0:10c:5e6f:955f with SMTP id gm28csp1145168pzb; Fri, 26 May 2023 01:03:43 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ6pHEz41OudTRAzO0koezrEUwpLMMIk2pnlfAGWgablVTVA10LKULuITDz2aVnKmFBHvFqg X-Received: by 2002:a17:907:930b:b0:94e:ec32:ba28 with SMTP id bu11-20020a170907930b00b0094eec32ba28mr1368755ejc.29.1685088223541; Fri, 26 May 2023 01:03:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1685088223; cv=none; d=google.com; s=arc-20160816; b=IiZ9n17gY6UPQXnWXXVKsbSPK42p7YFjVKA+IE7PzVE5S3BcteJY/Vxa1UySiRK7ld XMaIpnzqnBsVEXjqyOceXiHqW+XGLG3XrhKYvjkuVN0Az/aEItrXwvNyNyxn+c75PvmJ SU4YwVjKE+gsHQkt5hvDsE4neLfJV1jAJUUsjdzy+rAGbB+LG1uC91TBxLXXQqfGmWh2 kFcE6J0e2NRZBF7QZ2uuEOap33PEtSLm9g4YRMPIvI3jI0iJTs3K9LIRw/nbTAe/Kj/w rU0QaoZGhg3zt5B4qPNcrfUuAyKeeRjxakpMtPmiL1kdZIICMs7VBvb0Gu1lZaPaQjZ6 8NjQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=Bqdf9YjS8Y3Flsudd0cIWA3sE4avETRNVcn3qkiN/gM=; b=E4S1u60i9pnYOlRnB7EIqSPK9R6mTFWBkGRIH9hpNBEKm0+Hi5TZv9k7DniM1TTEBN 5QfRqg1lum4awELrpQyQafqNVYcsnfOhUDC3XAg5l2DNbU1egkqA4jx/090eOojLSIL0 Gyf6WEqCBN7B79soqA8KMZpBCjjrQ4rctTdX+ODC/Zi+vZotcynG2PaHYFuOSETkKV+E ku8xydOend1sTG3iHwRyP8rTzr165MS1ufHOj3+IjWOx4dsafAkP5XIgzK6vl9XXv6Wx W1Ve5uSgZdAGQnpc+AN/bC64n0uAZnBJ/+Vgv5frwLTJ7R+BaHfOmo+POBQqZb+WmUEc QaMw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@martin-st.20221208.gappssmtp.com header.s=20221208 header.b=0MmRd5gp; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id m10-20020aa7c2ca000000b00510e67aa1ddsi302357edp.658.2023.05.26.01.03.43; Fri, 26 May 2023 01:03:43 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@martin-st.20221208.gappssmtp.com header.s=20221208 header.b=0MmRd5gp; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 78C0768C1CE; Fri, 26 May 2023 11:03:25 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lj1-f170.google.com (mail-lj1-f170.google.com [209.85.208.170]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2B84268B9FF for ; Fri, 26 May 2023 11:03:18 +0300 (EEST) Received: by mail-lj1-f170.google.com with SMTP id 38308e7fff4ca-2af177f12a5so4245881fa.2 for ; Fri, 26 May 2023 01:03:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=martin-st.20221208.gappssmtp.com; s=20221208; t=1685088197; x=1687680197; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=L8yRQJJKd4bFjDo1Bqo1/bAPWXkS8VpFRmkM1wXOFV0=; b=0MmRd5gpWQKG1RXILeSCOLzeSpPULfherLDNqs/huHX8V5HnNvKOlTgoOiOHZfD/6l Dx4RRGVKQY3uRTCfPU+CxC2ZRnParRZJgBI2XKyNtrdUPdWXKvOuR0k3CJ/jy4/yGYJ3 V2L4x6yaUNVQv5Ws+kbomFn5DJtYe9A1mr9VI6J0I7rzKLiwLXZDlMm/RAP6Wu/TYWQ6 DH/ScjJKNSjkIQyhZhjiKfWv5xcTpJVboj34g85hV3+A3IdBu7zOutl+yZbKAvutHb7K BbM55Eg9wpjaCCOD2/xu/bhQ4+22hE+CnOJkf12/xZJOUruQuPJ407w0XT5/vo8ibu1y eBXw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685088197; x=1687680197; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=L8yRQJJKd4bFjDo1Bqo1/bAPWXkS8VpFRmkM1wXOFV0=; b=Rbk39C9xTcjBRMZYB3iEgYd3nOLMO42SYNbPNYOOear3i9bGt5qkkivTe1oSkl9t/t nI32DmrV2vtem3XUuOS/ZETR3iCZDHBpB7Dg3o9ocajDBpMTMN3PzgsuxV5YZPKM8pi/ /i9QPSJ7qAVo8XG2wv0Zx/fQEqZXtIaRZk1Ks1MCZiSj/PrSYOk0Csi0cnPmACb9KgFu beGc0gqG4ROmQrwAcyOmDnMz7dBq8pJoMkjV47PuAfzVWzT9C1jPgqk5YWzcY/OINfmr S5DgnLQBqbYBoi0Hp14O6Zn+sztTeG+NOXXvnaIWsXnHAZkQcLQNu2rqg/poGD4GWB/S Ey7Q== X-Gm-Message-State: AC+VfDw5oJ2mXMPQ3cA+MF8+DsUZAWux5uyL7HKotCmkFU5BfL8ztzXC MFgVYV9JV7IEEsMgIB/510k5Yuaa/I+jQmEP7hA0qQ== X-Received: by 2002:a2e:7806:0:b0:2a8:eae2:d563 with SMTP id t6-20020a2e7806000000b002a8eae2d563mr523547ljc.53.1685088196837; Fri, 26 May 2023 01:03:16 -0700 (PDT) Received: from localhost (dsl-tkubng21-58c01c-243.dhcp.inet.fi. [88.192.28.243]) by smtp.gmail.com with ESMTPSA id m25-20020a2e97d9000000b002a8b9570403sm602505ljj.31.2023.05.26.01.03.16 for (version=TLS1 cipher=AES128-SHA bits=128/128); Fri, 26 May 2023 01:03:16 -0700 (PDT) From: =?utf-8?q?Martin_Storsj=C3=B6?= To: ffmpeg-devel@ffmpeg.org Date: Fri, 26 May 2023 11:03:13 +0300 Message-Id: <20230526080315.83424-2-martin@martin.st> X-Mailer: git-send-email 2.37.1 (Apple Git-137.1) In-Reply-To: <20230526080315.83424-1-martin@martin.st> References: <20230526080315.83424-1-martin@martin.st> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/4] aarch64: Add cpu flags for the dotprod and i8mm extensions X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: eKa3TkB7HuzC Set these available if they are available unconditionally for the compiler. --- libavutil/aarch64/cpu.c | 15 ++++++++++++--- libavutil/aarch64/cpu.h | 2 ++ libavutil/cpu.c | 2 ++ libavutil/cpu.h | 2 ++ libavutil/tests/cpu.c | 2 ++ tests/checkasm/checkasm.c | 2 ++ 6 files changed, 22 insertions(+), 3 deletions(-) diff --git a/libavutil/aarch64/cpu.c b/libavutil/aarch64/cpu.c index cc641da576..42b33e4a2d 100644 --- a/libavutil/aarch64/cpu.c +++ b/libavutil/aarch64/cpu.c @@ -22,9 +22,18 @@ int ff_get_cpu_flags_aarch64(void) { - return AV_CPU_FLAG_ARMV8 * HAVE_ARMV8 | - AV_CPU_FLAG_NEON * HAVE_NEON | - AV_CPU_FLAG_VFP * HAVE_VFP; + int flags = AV_CPU_FLAG_ARMV8 * HAVE_ARMV8 | + AV_CPU_FLAG_NEON * HAVE_NEON | + AV_CPU_FLAG_VFP * HAVE_VFP; + +#ifdef __ARM_FEATURE_DOTPROD + flags |= AV_CPU_FLAG_DOTPROD; +#endif +#ifdef __ARM_FEATURE_I8MM + flags |= AV_CPU_FLAG_I8MM; +#endif + + return flags; } size_t ff_get_cpu_max_align_aarch64(void) diff --git a/libavutil/aarch64/cpu.h b/libavutil/aarch64/cpu.h index 2ee3f9323a..64d703be37 100644 --- a/libavutil/aarch64/cpu.h +++ b/libavutil/aarch64/cpu.h @@ -25,5 +25,7 @@ #define have_armv8(flags) CPUEXT(flags, ARMV8) #define have_neon(flags) CPUEXT(flags, NEON) #define have_vfp(flags) CPUEXT(flags, VFP) +#define have_dotprod(flags) CPUEXT(flags, DOTPROD) +#define have_i8mm(flags) CPUEXT(flags, I8MM) #endif /* AVUTIL_AARCH64_CPU_H */ diff --git a/libavutil/cpu.c b/libavutil/cpu.c index 2c5f7f4958..2ffc3986aa 100644 --- a/libavutil/cpu.c +++ b/libavutil/cpu.c @@ -174,6 +174,8 @@ int av_parse_cpu_caps(unsigned *flags, const char *s) { "armv8", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_ARMV8 }, .unit = "flags" }, { "neon", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_NEON }, .unit = "flags" }, { "vfp", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_VFP }, .unit = "flags" }, + { "dotprod", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_DOTPROD }, .unit = "flags" }, + { "i8mm", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_I8MM }, .unit = "flags" }, #elif ARCH_MIPS { "mmi", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_MMI }, .unit = "flags" }, { "msa", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_MSA }, .unit = "flags" }, diff --git a/libavutil/cpu.h b/libavutil/cpu.h index 8fa5ea9199..da486f9c7a 100644 --- a/libavutil/cpu.h +++ b/libavutil/cpu.h @@ -69,6 +69,8 @@ #define AV_CPU_FLAG_NEON (1 << 5) #define AV_CPU_FLAG_ARMV8 (1 << 6) #define AV_CPU_FLAG_VFP_VM (1 << 7) ///< VFPv2 vector mode, deprecated in ARMv7-A and unavailable in various CPUs implementations +#define AV_CPU_FLAG_DOTPROD (1 << 8) +#define AV_CPU_FLAG_I8MM (1 << 9) #define AV_CPU_FLAG_SETEND (1 <<16) #define AV_CPU_FLAG_MMI (1 << 0) diff --git a/libavutil/tests/cpu.c b/libavutil/tests/cpu.c index dadadb31dc..a52637339d 100644 --- a/libavutil/tests/cpu.c +++ b/libavutil/tests/cpu.c @@ -38,6 +38,8 @@ static const struct { { AV_CPU_FLAG_ARMV8, "armv8" }, { AV_CPU_FLAG_NEON, "neon" }, { AV_CPU_FLAG_VFP, "vfp" }, + { AV_CPU_FLAG_DOTPROD, "dotprod" }, + { AV_CPU_FLAG_I8MM, "i8mm" }, #elif ARCH_ARM { AV_CPU_FLAG_ARMV5TE, "armv5te" }, { AV_CPU_FLAG_ARMV6, "armv6" }, diff --git a/tests/checkasm/checkasm.c b/tests/checkasm/checkasm.c index 7389ebaee9..4311a8ffcb 100644 --- a/tests/checkasm/checkasm.c +++ b/tests/checkasm/checkasm.c @@ -230,6 +230,8 @@ static const struct { #if ARCH_AARCH64 { "ARMV8", "armv8", AV_CPU_FLAG_ARMV8 }, { "NEON", "neon", AV_CPU_FLAG_NEON }, + { "DOTPROD", "dotprod", AV_CPU_FLAG_DOTPROD }, + { "I8MM", "i8mm", AV_CPU_FLAG_I8MM }, #elif ARCH_ARM { "ARMV5TE", "armv5te", AV_CPU_FLAG_ARMV5TE }, { "ARMV6", "armv6", AV_CPU_FLAG_ARMV6 },