From patchwork Thu Nov 9 11:58:28 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Darnley X-Patchwork-Id: 5902 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.161.90 with SMTP id m26csp1947190jah; Thu, 9 Nov 2017 04:05:08 -0800 (PST) X-Google-Smtp-Source: ABhQp+TwosMSAuJ8GQ1BPL3rloYvXR2A5/Mv+AV9FnJKtp6jNjBCN7cqldJBClX5d/EAnM6t9G7i X-Received: by 10.223.188.133 with SMTP id g5mr222962wrh.204.1510229108076; Thu, 09 Nov 2017 04:05:08 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1510229108; cv=none; d=google.com; s=arc-20160816; b=uJBUcOsvwYIUAYGA92vHUM214ixzIlre/3sjWEo1RS3u2I8spkx2UQQCXwNtweX64x H/cpS4PJ7WD+dMxWC0ksZHqmiTx7QoxaFPJxnTbMOjElmBKtnMhcFpkJaZyb23Lqwlw9 NOrE3SW5Dg3JPzzG0luy3dZC8a/A2jXUG5iaVhh56SHsBikPzBh5IBs2ip4wSuO34KKA 8i8oytmACKZqAKs8I1YVSmJ9ORt2sbu5zXpSdZDqvyBqMzJlYXUuO+5mA0KLE6Trn0pW dwK/oSpmkHuCG6josHULnlvq7V0KTNV6rBGEa/ARPMjQKeihn/lAACtBcUDwJMTiFKhu XCWg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=a+xOlywMenbpU8/gwRP0iGd0lNDIv0Mo4pSh60jExOo=; b=PF55MqwZJamio6an6Ks+trwmxOmF0F9LjWaPKYusLt5wppRBReym0S8tiHfIx4Ifb7 pomNwVgrWhX9ysUl/tCMnl8RHWp5cBE9OpmHXTHECIOf/xbOxB6lKcoDJ1PueuN0G6W4 A5sD/+BzisP+Gp4nu3oCcTvbX5ckLqmzu/NTNIgFj/J/XtL+h80IBKxmC87AqB5mrP7D RfGpSeX5MmJv9V/l0WoazBKoPR6VDoc4/2epLAWZkw5H053RHz5tD0r9BCPcMNREsMpq EmNPTxrLvVfCvYNHAdZQxYVVyzpenm8qN3dzr57O0Vwkpyy8Djsvay4lXWOJagR9mqTY +rOg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@ob-encoder-com.20150623.gappssmtp.com header.s=20150623 header.b=13pQsDLe; 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 b4si6118218wra.326.2017.11.09.04.05.07; Thu, 09 Nov 2017 04:05:08 -0800 (PST) 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=@ob-encoder-com.20150623.gappssmtp.com header.s=20150623 header.b=13pQsDLe; 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 012B0689F73; Thu, 9 Nov 2017 14:04:54 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm0-f68.google.com (mail-wm0-f68.google.com [74.125.82.68]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5DC06689EDC for ; Thu, 9 Nov 2017 14:04:48 +0200 (EET) Received: by mail-wm0-f68.google.com with SMTP id t139so17171448wmt.1 for ; Thu, 09 Nov 2017 04:05:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ob-encoder-com.20150623.gappssmtp.com; s=20150623; h=sender:from:to:subject:date:message-id:in-reply-to:references; bh=a39jKJMVGK0cpOhRO67EwF3mCktwYF1oHVQESD8DmCc=; b=13pQsDLeBvLJxYE6TvOL0dA7BvNJHZy0SbXA15y7Sqep6zmJZySR68yjAlYmcVBuUE 4lrHzLE+WyP0uzT8L2PjY+zZaRCQRXtSmO4g48mheOyqBacwb0f6do6kGpRvuUGcRQ/u a/taWbcxiXgH01sHZkbB9+x5C6sCdQACYBhtZzFPUOdClMMdLmoIq+XJceED8Yvy5x9+ QyQANlVYyZBkJo8LX5Tim1frXpZdF04J4F8+PCkO+mG+UbQE5Ny9HNSePBdY41WehcC6 3oAdksmp6wFeWwgiKgEi7If1zHYgytuKsZA6lYiTacCv02HD6IyIwfyZI6oGL5zh/qiN i2mA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:subject:date:message-id :in-reply-to:references; bh=a39jKJMVGK0cpOhRO67EwF3mCktwYF1oHVQESD8DmCc=; b=VddhG3e/l5C8lTJYJgBl36UoT7SepZrWskj2x0sfs2ZLUiPwn11kjFIy6tI38Ampoo b4NINVVnwSVq1v6D65mScyTLKxt5PrMASPbkJlEQBFcBiFkHuOVThfhLy4qvgqAXLfsI eTlGYNyiPqLf5wLasqtBMB8KmhE2KO36uGpkzSFfKXbWA+Mws5jWy8PQbh2yCLpgRCz6 kkYkN1JtkksM1zpJRZ0J5fRsd8vdFYiDWukeyvzcfnqSvKL3INEHiW5NPD0/iYzn8xf5 uQigSocqavKCeRGVHf8bb3yPY6g6HRMm9pLNVhldRBu0sEzLRTz1Jz59FREZIpZwM3MH QE9Q== X-Gm-Message-State: AJaThX5UPyl4/002zVeZmCSmu56l0jamqOucqILDG8BiGVWFNkl5xgmS c4a/CsRfiva3717zU/uvFo975p5D X-Received: by 10.80.147.193 with SMTP id o59mr366103eda.88.1510228727173; Thu, 09 Nov 2017 03:58:47 -0800 (PST) Received: from Highwind.systemlords.lan (d51A44418.access.telenet.be. [81.164.68.24]) by smtp.gmail.com with ESMTPSA id x7sm5754101edi.6.2017.11.09.03.58.46 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 09 Nov 2017 03:58:46 -0800 (PST) From: James Darnley To: ffmpeg-devel@ffmpeg.org Date: Thu, 9 Nov 2017 12:58:28 +0100 Message-Id: <20171109115837.32618-3-jdarnley@obe.tv> X-Mailer: git-send-email 2.15.0 In-Reply-To: <20171109115837.32618-1-jdarnley@obe.tv> References: <20171109115837.32618-1-jdarnley@obe.tv> Subject: [FFmpeg-devel] [PATCH 02/11] avutil: add AVX-512 flags X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" --- libavutil/cpu.c | 6 +++++- libavutil/cpu.h | 1 + libavutil/tests/cpu.c | 1 + libavutil/x86/cpu.h | 2 ++ 4 files changed, 9 insertions(+), 1 deletion(-) diff --git a/libavutil/cpu.c b/libavutil/cpu.c index c8401b8258..6548cc3042 100644 --- a/libavutil/cpu.c +++ b/libavutil/cpu.c @@ -80,7 +80,8 @@ void av_force_cpu_flags(int arg){ AV_CPU_FLAG_XOP | AV_CPU_FLAG_FMA3 | AV_CPU_FLAG_FMA4 | - AV_CPU_FLAG_AVX2 )) + AV_CPU_FLAG_AVX2 | + AV_CPU_FLAG_AVX512 )) && !(arg & AV_CPU_FLAG_MMX)) { av_log(NULL, AV_LOG_WARNING, "MMX implied by specified flags\n"); arg |= AV_CPU_FLAG_MMX; @@ -126,6 +127,7 @@ int av_parse_cpu_flags(const char *s) #define CPUFLAG_AVX2 (AV_CPU_FLAG_AVX2 | CPUFLAG_AVX) #define CPUFLAG_BMI2 (AV_CPU_FLAG_BMI2 | AV_CPU_FLAG_BMI1) #define CPUFLAG_AESNI (AV_CPU_FLAG_AESNI | CPUFLAG_SSE42) +#define CPUFLAG_AVX512 (AV_CPU_FLAG_AVX512 | CPUFLAG_AVX2) static const AVOption cpuflags_opts[] = { { "flags" , NULL, 0, AV_OPT_TYPE_FLAGS, { .i64 = 0 }, INT64_MIN, INT64_MAX, .unit = "flags" }, #if ARCH_PPC @@ -154,6 +156,7 @@ int av_parse_cpu_flags(const char *s) { "3dnowext", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = CPUFLAG_3DNOWEXT }, .unit = "flags" }, { "cmov", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_CMOV }, .unit = "flags" }, { "aesni" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = CPUFLAG_AESNI }, .unit = "flags" }, + { "avx512" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = CPUFLAG_AVX512 }, .unit = "flags" }, #elif ARCH_ARM { "armv5te", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_ARMV5TE }, .unit = "flags" }, { "armv6", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_ARMV6 }, .unit = "flags" }, @@ -216,6 +219,7 @@ int av_parse_cpu_caps(unsigned *flags, const char *s) { "3dnowext", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_3DNOWEXT }, .unit = "flags" }, { "cmov", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_CMOV }, .unit = "flags" }, { "aesni", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_AESNI }, .unit = "flags" }, + { "avx512" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_AVX512 }, .unit = "flags" }, #define CPU_FLAG_P2 AV_CPU_FLAG_CMOV | AV_CPU_FLAG_MMX #define CPU_FLAG_P3 CPU_FLAG_P2 | AV_CPU_FLAG_MMX2 | AV_CPU_FLAG_SSE diff --git a/libavutil/cpu.h b/libavutil/cpu.h index 9e5d40affe..91523f3f5a 100644 --- a/libavutil/cpu.h +++ b/libavutil/cpu.h @@ -55,6 +55,7 @@ #define AV_CPU_FLAG_FMA3 0x10000 ///< Haswell FMA3 functions #define AV_CPU_FLAG_BMI1 0x20000 ///< Bit Manipulation Instruction Set 1 #define AV_CPU_FLAG_BMI2 0x40000 ///< Bit Manipulation Instruction Set 2 +#define AV_CPU_FLAG_AVX512 0x100000 ///< AVX-512 functions #define AV_CPU_FLAG_ALTIVEC 0x0001 ///< standard #define AV_CPU_FLAG_VSX 0x0002 ///< ISA 2.06 diff --git a/libavutil/tests/cpu.c b/libavutil/tests/cpu.c index f02a54cbbb..ce45b715a0 100644 --- a/libavutil/tests/cpu.c +++ b/libavutil/tests/cpu.c @@ -73,6 +73,7 @@ static const struct { { AV_CPU_FLAG_BMI1, "bmi1" }, { AV_CPU_FLAG_BMI2, "bmi2" }, { AV_CPU_FLAG_AESNI, "aesni" }, + { AV_CPU_FLAG_AVX512, "avx512" }, #endif { 0 } }; diff --git a/libavutil/x86/cpu.h b/libavutil/x86/cpu.h index 309b8e746c..7f4e5d08bb 100644 --- a/libavutil/x86/cpu.h +++ b/libavutil/x86/cpu.h @@ -50,6 +50,7 @@ #define X86_FMA4(flags) CPUEXT(flags, FMA4) #define X86_AVX2(flags) CPUEXT(flags, AVX2) #define X86_AESNI(flags) CPUEXT(flags, AESNI) +#define X86_AVX512(flags) CPUEXT(flags, AVX512) #define EXTERNAL_AMD3DNOW(flags) CPUEXT_SUFFIX(flags, _EXTERNAL, AMD3DNOW) #define EXTERNAL_AMD3DNOWEXT(flags) CPUEXT_SUFFIX(flags, _EXTERNAL, AMD3DNOWEXT) @@ -79,6 +80,7 @@ #define EXTERNAL_AVX2_FAST(flags) CPUEXT_SUFFIX_FAST2(flags, _EXTERNAL, AVX2, AVX) #define EXTERNAL_AVX2_SLOW(flags) CPUEXT_SUFFIX_SLOW2(flags, _EXTERNAL, AVX2, AVX) #define EXTERNAL_AESNI(flags) CPUEXT_SUFFIX(flags, _EXTERNAL, AESNI) +#define EXTERNAL_AVX512(flags) CPUEXT_SUFFIX(flags, _EXTERNAL, AVX512) #define INLINE_AMD3DNOW(flags) CPUEXT_SUFFIX(flags, _INLINE, AMD3DNOW) #define INLINE_AMD3DNOWEXT(flags) CPUEXT_SUFFIX(flags, _INLINE, AMD3DNOWEXT)