From patchwork Thu Jul 4 01:23:29 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean McGovern X-Patchwork-Id: 50320 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:cc64:0:b0:482:c625:d099 with SMTP id k4csp3454049vqv; Wed, 3 Jul 2024 20:04:07 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCXTYTR7ToTX2h0xz31z7InLpivAMkRntCNjndYytcFax+OhCBTYqY12S0/4ACwvbZPXCc4n05Q803p1xwqXQhGmKNLNX0FzrdIlpQ== X-Google-Smtp-Source: AGHT+IHObIABPEVNlPzXtm9DOdCUtbcUjIXoWnJUdbbFsDqvElGBmyNEziCq77GsePAW3bWQ9PCt X-Received: by 2002:a17:906:ccd9:b0:a6f:dcd7:504 with SMTP id a640c23a62f3a-a77ba727a3bmr16789966b.69.1720062247080; Wed, 03 Jul 2024 20:04:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1720062247; cv=none; d=google.com; s=arc-20160816; b=GMsctHObxQvo7aDJ4sCTq1UCokyYvoakng7Jjkp0lC0o3hQ4nJ1HWBYUP2GC5oZczn W2eJqRX4A8bNxyEWDbSbTd12d71U5UcBJG9FMXsxTdkmUE4CcRR3FQlNoKHtduyYv0zg ZEkWaa1tA2GnmYD5uXENjq94SyKIKwO3oYjNs6LUdKqgyMXHJTYy9Hl+fulFBJZ9Ls89 31RkNENhAqtq9xR6PWotROzPrU7UTJ6OZpautV8s2jjTVPwO7MNe6AQd31/gatmWNFt9 nA9v7O/cepoHYFvVnRJord0SczCe2sujq5lWAhlK+ttG1qdYrcQvXh1pC0vBeQSAieSb LUsA== 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:message-id:date:to:from :dkim-signature:delivered-to; bh=SSw5qG0gXIswnMs2jMsPsC0sil3jiBrff60LXP9b8tk=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=sAJsLb9DEsIvRIdbwKEYYxZM43ZhQxRDpYbwfH78DO3vXUG/cPXM+LBSGjTGjeokrM uk6bHvppc8YGRT2jbtOw8lGrCJI9YzPPR9tTZRbK8MZ3n3WuTHxe8kDTbh/QyIWcDsFv +tUmRuzzjSMyjpK9u64S30uafLzj514mcSwYUk0Zh/Mbowy9PG5ptnKw6pzTWSw8MNqv 92t+t2hCxMoPY4tE7NoBBca9ahgphDlwKvYQJDccztLauMhrFLlDf4deP+8+/+DzvBw/ JIfEPuTOzp8S0a2w/xwMCqq3U1W+YdghPiSDWvt7x6OWNMBFvo88hKzzlgbRS1XlUK1k w8Lg==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20230601 header.b=c2MYbHhX; 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; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id a640c23a62f3a-a72ab097f17si629429266b.854.2024.07.03.20.04.06; Wed, 03 Jul 2024 20:04:07 -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=@gmail.com header.s=20230601 header.b=c2MYbHhX; 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; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 091E268D22E; Thu, 4 Jul 2024 04:24:20 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qt1-f181.google.com (mail-qt1-f181.google.com [209.85.160.181]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 57B9568CC56 for ; Thu, 4 Jul 2024 04:24:13 +0300 (EEST) Received: by mail-qt1-f181.google.com with SMTP id d75a77b69052e-446416dccd5so451261cf.3 for ; Wed, 03 Jul 2024 18:24:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1720056251; x=1720661051; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:from:to:cc:subject:date:message-id:reply-to; bh=iauonCMTCUny0qHmm73ihJJjuozVpGGBMdNAcY3DpPk=; b=c2MYbHhXEFbVEnYIhPSsAg97nvXqw07MD3JkxVomxBJ+huvf5h895bRqXptNpxP/eb OzmYoYD1b8/g/kmOglRm4WPmCX73/v/bx0qhh8CV1bTlMzy/dXoTgUM4qdCbn7UtQXJg Ykj9kV8I0yGnD2mvGgkLZtHhrbrGhCrZrf911+2uue1QDqMel0F0paAL7Km6D85URnVN xn/LFBF0AV0+0AwXdmbsqdoyUAW1wMOhvXRnmZRB1NFCv6HN1/JBbXqyzB3UdsVyRad8 7RbNvHBJYpCmq1W8h1lnFEnGbGSgDRaxmbh1OvE1Le0ytJIWF0QiktnmMdGGaBYzbPmw +PHQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720056251; x=1720661051; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=iauonCMTCUny0qHmm73ihJJjuozVpGGBMdNAcY3DpPk=; b=ZWdisdo48YT+YjIRhd16BTZEIsoaZq4b7O3ys/IiJ0xsx/iapDnLS81m90gE6wZjEa L0a8vyxwxK6IFFquvYf3rWFk7cyULSZfjeMG3xWOPr37meRy6inUZFQ7R8irFuJgRPJc m1UVfCpUUH+4580NBkH6R5wp2COyKobOceMOk0kq+2yaCBAKa8W9zqVuuSRroIRUdmXs 8gU4cI5ip7Cuvmgz6NZwNogGqdXbVjzHal6tb1dCSjmEVaKjbkjSiUyAM7wqV705QIHl AXHmr8sRZ4wwIuP4cQGdqo5S6eLWt7sNlyZVxAoO4+if14+VuijP9HwseiAnV/Qszt4M tKvA== X-Gm-Message-State: AOJu0YyHN/j1X29zlNPAEVS/SEjczd4xF/eCWLThZNoeW0EjJvMQWHAx ZPfnutupwBMpPSe2XyVvok2UGqOIpG9O5IAdPEnns2ybWTqz+dYPRryV9A== X-Received: by 2002:a05:6214:c86:b0:6b5:6138:1a54 with SMTP id 6a1803df08f44-6b5ed194ffamr2319106d6.56.1720056251339; Wed, 03 Jul 2024 18:24:11 -0700 (PDT) Received: from elysia.seanmcgovern.ca ([2607:f2c0:929e:a300:a6c5:6b5f:489c:391e]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-6b59e5f39c1sm59223876d6.97.2024.07.03.18.24.10 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Jul 2024 18:24:10 -0700 (PDT) From: Sean McGovern To: ffmpeg-devel@ffmpeg.org Date: Wed, 3 Jul 2024 21:23:29 -0400 Message-Id: <20240704012330.2046242-1-gseanmcg@gmail.com> X-Mailer: git-send-email 2.39.2 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/2] configure: permit POWER9 cpu flags 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: u2mxmuoBuLmN --- configure | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure b/configure index b28221f258..bbda7a02cb 100755 --- a/configure +++ b/configure @@ -5493,7 +5493,7 @@ elif enabled ppc; then cpuflags="-mcpu=$cpu" disable vsx ;; - power[7-8]*) + power[7-9]*) cpuflags="-mcpu=$cpu" ;; cell) From patchwork Thu Jul 4 01:23:30 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean McGovern X-Patchwork-Id: 50321 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:cc64:0:b0:482:c625:d099 with SMTP id k4csp3494656vqv; Wed, 3 Jul 2024 22:24:07 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCWyVNhJcJYFg4w+m4gmE5+58JPn1+Oydo3AFSKDfBN2gdKM2jzWl9W20nYp+gjGzlcGRM3Nd+et7N/svQwmuWyNi6ckurLyikNj4A== X-Google-Smtp-Source: AGHT+IFkeCAn8DgwGuTcJROmzMJZe2Ydr/SGyU+Fqg0zhFkib9ZfIFIdqfWwcILkGjoYpnvWcC6T X-Received: by 2002:a2e:6e11:0:b0:2ee:4f93:ae25 with SMTP id 38308e7fff4ca-2ee8ed62843mr2807541fa.29.1720070646828; Wed, 03 Jul 2024 22:24:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1720070646; cv=none; d=google.com; s=arc-20160816; b=S4oFbYadpa/ey+MtbAydWsE4JBacSIFi4vmrX69URPNP3AwnXBgOj0e1cWRTgydn1M F+pX3YQywPwRtl33Lm1UDzdNOIjGs6azorXhv/klNPEZsrLXVLtswWxn1UfsJOyRprJ7 koOnq88/DC+KnbAhnG/vstCiIdunoU8Xk16I5vqdffmttlR7pHC95mmi+pdQca3FpGUB qhf+F02GJCBDTnMRrCm+S0J5SO+xcbLBm/HbeZJ9zKkLPc30lu7ALUuNV1Gm9hAFgO6W cg6nHIanxzUP8lo+Y2nQ8OZC8dgJWAqwRt6D/BDjthV7oAWp+yMOqfALq2rLYFVfQ8nj v1aQ== 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=CxV/3EKqJEHViO7beI5XaDgbPIUswdWzTLl5YRLSfvw=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=b5BUV+Xv4jQ7N4pt5pjIyVOmE4RsaXOeQMm3Rpo1GFVh74/S9jPH6zyvbFlctDNigF LDorpL2uWSxNFt5aMbnUG5y+siOc/vM2i8pCI0ymga8gCmvGeHnwTevnv0c0rO4etbKR p7+vFSrD8RXbB+OkDKojYtdVFyT9JitYeifnq+wbjgTEq3Lq6pMA2Jq1CvByxGLY70/a g37IABDbQdZ2tho+lQBIwzvtUXQtMPNwqnIkoFfk7d63iBv0fiQU97zN4S5hCyRIbuV4 rxWzxJ9MK32z6zl/wGLmI0OMXIjM8zGW9REuepxXXh0xfvcBLJHpqpkxKFxgzpCvPWRA WfNA==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20230601 header.b=YGXx4Mlm; 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; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 38308e7fff4ca-2ee8b49a791si3230671fa.75.2024.07.03.22.24.06; Wed, 03 Jul 2024 22:24:06 -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=@gmail.com header.s=20230601 header.b=YGXx4Mlm; 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; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 5BE9968D409; Thu, 4 Jul 2024 04:24:21 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qt1-f171.google.com (mail-qt1-f171.google.com [209.85.160.171]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id D550468CC56 for ; Thu, 4 Jul 2024 04:24:14 +0300 (EEST) Received: by mail-qt1-f171.google.com with SMTP id d75a77b69052e-444fd22b7e5so559541cf.2 for ; Wed, 03 Jul 2024 18:24:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1720056253; x=1720661053; darn=ffmpeg.org; 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=wwn2cpUa13ncFrImKWT6tXGheNWP8u4HN9Eg0eQm/p0=; b=YGXx4Mlmph8omAeEXZlg+09BoTSocIc/Fe6Wv14E0qhCwgKgRiliStPlOdxRhRzVuv rCfTI1Kq3DUALnoq1UfJTv29p3o+dXZqKppipgcqIbejrJNufANK+Zg4fmMAqYqhquHB 9tBKKRF/bxpi+k2cYGdH4Elv5KwMRWOrgmD6ELnufEpZDH0G61Y7ho2Qgr2LoLHOg86B N8DfhNSMUUOWLnVZfwrP3hkgihi0BIJa8NuNpLvzztAuxXElqhsThloprppXvO6cNBdf epJco8XZgtPcMacYNjI0ak40rOfc06lBYxKgEpDGEp2aR3p9BB0UXdA0kCeXUqo/ySrv q+qA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720056253; x=1720661053; 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=wwn2cpUa13ncFrImKWT6tXGheNWP8u4HN9Eg0eQm/p0=; b=m/hlnJeSHnb2VrtRaENeB4gjW6r6cwNzhMQWbZDRHmZ0GtOL58AJH6k+6Is5shuHIx VncM6ZBvtfPycjw989CqkDRvCFcUBwTz78ObAIdGSaoSddDEWkAUmQfh5vxxpns1pAoJ MCBzv6z0t1xKUmZvi7t4nxV114Sqphho61YPy10rrZf+Vm+c+ZXSRPk85duzc7MSa4hv +M9pKn3/opfEc5MZrq7jTgA5QsmUuON45V3kzN/lOChuDsx2R3ae3jev19FIJK7JvR+f iy6Q8mqvtg427tD11lf8bvB2EJo07tRNXZ4Uo+REDTl/CudBL7Fp4T5MrXCPMWWJaW+B /WxQ== X-Gm-Message-State: AOJu0YxlEQ/MwlJS7/sB+Kghlro45bOty2iOxKIl4OumfPkgl0GIF60W xJtVbazu/Ep2lNiLhaQ/hM2TEZnG7jRSSYTRjp3mB0OE8KKhlxkN/sdHnw== X-Received: by 2002:a05:6214:448e:b0:6b5:4e5d:7cfd with SMTP id 6a1803df08f44-6b5ecfdde85mr3033206d6.23.1720056252515; Wed, 03 Jul 2024 18:24:12 -0700 (PDT) Received: from elysia.seanmcgovern.ca ([2607:f2c0:929e:a300:a6c5:6b5f:489c:391e]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-6b59e5f39c1sm59223876d6.97.2024.07.03.18.24.11 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Jul 2024 18:24:12 -0700 (PDT) From: Sean McGovern To: ffmpeg-devel@ffmpeg.org Date: Wed, 3 Jul 2024 21:23:30 -0400 Message-Id: <20240704012330.2046242-2-gseanmcg@gmail.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240704012330.2046242-1-gseanmcg@gmail.com> References: <20240704012330.2046242-1-gseanmcg@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/2] lavc/flacdsp: implement wasted32 DSP function for VSX on POWER 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: 9HVujFgkYpe7 RaptorCS POWER9 (8c4t) @ 2.2GHz: flac_wasted_32_c: 50.1 flac_wasted_32_vsx: 17.3 --- libavcodec/flacdsp.c | 2 ++ libavcodec/flacdsp.h | 1 + libavcodec/ppc/Makefile | 2 ++ libavcodec/ppc/flacdsp_init.c | 38 ++++++++++++++++++++++++++++ libavcodec/ppc/flacdsp_vsx.c | 47 +++++++++++++++++++++++++++++++++++ 5 files changed, 90 insertions(+) create mode 100644 libavcodec/ppc/flacdsp_init.c create mode 100644 libavcodec/ppc/flacdsp_vsx.c diff --git a/libavcodec/flacdsp.c b/libavcodec/flacdsp.c index f5362bf66f..b63d55ddcd 100644 --- a/libavcodec/flacdsp.c +++ b/libavcodec/flacdsp.c @@ -156,5 +156,7 @@ av_cold void ff_flacdsp_init(FLACDSPContext *c, enum AVSampleFormat fmt, int cha ff_flacdsp_init_riscv(c, fmt, channels); #elif ARCH_X86 ff_flacdsp_init_x86(c, fmt, channels); +#elif ARCH_PPC + ff_flacdsp_init_ppc(c, fmt, channels); #endif } diff --git a/libavcodec/flacdsp.h b/libavcodec/flacdsp.h index 3b7b35a112..941536ef16 100644 --- a/libavcodec/flacdsp.h +++ b/libavcodec/flacdsp.h @@ -45,5 +45,6 @@ void ff_flacdsp_init(FLACDSPContext *c, enum AVSampleFormat fmt, int channels); void ff_flacdsp_init_arm(FLACDSPContext *c, enum AVSampleFormat fmt, int channels); void ff_flacdsp_init_riscv(FLACDSPContext *c, enum AVSampleFormat fmt, int channels); void ff_flacdsp_init_x86(FLACDSPContext *c, enum AVSampleFormat fmt, int channels); +void ff_flacdsp_init_ppc(FLACDSPContext *c, enum AVSampleFormat fmt, int channels); #endif /* AVCODEC_FLACDSP_H */ diff --git a/libavcodec/ppc/Makefile b/libavcodec/ppc/Makefile index 10b9ca60da..7f81a8aa34 100644 --- a/libavcodec/ppc/Makefile +++ b/libavcodec/ppc/Makefile @@ -2,6 +2,8 @@ OBJS-$(CONFIG_AUDIODSP) += ppc/audiodsp.o OBJS-$(CONFIG_BLOCKDSP) += ppc/blockdsp.o OBJS-$(CONFIG_FDCTDSP) += ppc/fdctdsp.o +OBJS-$(CONFIG_FLAC_DECODER) += ppc/flacdsp_init.o +VSX-OBJS-$(CONFIG_FLAC_DECODER) += ppc/flacdsp_vsx.o OBJS-$(CONFIG_FMTCONVERT) += ppc/fmtconvert_altivec.o OBJS-$(CONFIG_H264CHROMA) += ppc/h264chroma_init.o OBJS-$(CONFIG_H264DSP) += ppc/h264dsp.o ppc/hpeldsp_altivec.o diff --git a/libavcodec/ppc/flacdsp_init.c b/libavcodec/ppc/flacdsp_init.c new file mode 100644 index 0000000000..526bddddbf --- /dev/null +++ b/libavcodec/ppc/flacdsp_init.c @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2024 Sean McGovern + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "config.h" + +#include "libavutil/attributes.h" +#include "libavutil/cpu.h" +#include "libavutil/ppc/cpu.h" +#include "libavcodec/flacdsp.h" + +void ff_flac_wasted32_vsx(int32_t *, int wasted, int len); + +av_cold void ff_flacdsp_init_ppc(FLACDSPContext *c, enum AVSampleFormat fmt, int channels) +{ +#if HAVE_VSX + if (!PPC_VSX(av_get_cpu_flags())) + return; + + c->wasted32 = ff_flac_wasted32_vsx; +#endif +} diff --git a/libavcodec/ppc/flacdsp_vsx.c b/libavcodec/ppc/flacdsp_vsx.c new file mode 100644 index 0000000000..c31566458c --- /dev/null +++ b/libavcodec/ppc/flacdsp_vsx.c @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2024 Sean McGovern + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "config.h" + +#include "libavutil/attributes.h" +#include "libavutil/cpu.h" +#include "libavutil/ppc/cpu.h" +#include "libavutil/ppc/util_altivec.h" +#include "libavcodec/flacdsp.h" + +void ff_flac_wasted32_vsx(int32_t *, int wasted, int len); + +#if HAVE_VSX + +void ff_flac_wasted32_vsx(int32_t *decoded, int wasted, int len) +{ + register vec_s32 vec1; + const register vec_u32 vec2 = vec_splats((unsigned)wasted); + register vec_s32 shifted; + + for (int i = 0; i < len; i+=sizeof(int32_t)) { + vec1 = vec_xl(0, decoded); + shifted = vec_sl(vec1, vec2); + vec_xst(shifted, 0, decoded); + decoded += sizeof(int32_t); + } +} + +#endif /* HAVE_VSX */