From patchwork Thu Jun 9 23:55:00 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 36154 Delivered-To: andriy.gelman@gmail.com Received: by 2002:a25:bb42:0:0:0:0:0 with SMTP id b2csp888813ybk; Thu, 9 Jun 2022 16:58:43 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwnc7GAtS3X5PX0LA1WUZaPT7QcBTK7oze1LaIf3SdDZRoFd3wBZpoBRuNteNX93AeDb0hN X-Received: by 2002:a17:906:519c:b0:712:1c90:1c39 with SMTP id y28-20020a170906519c00b007121c901c39mr1525096ejk.620.1654819123451; Thu, 09 Jun 2022 16:58:43 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id fj2-20020a1709069c8200b006fea2b8ed8dsi4735881ejc.297.2022.06.09.16.58.43; Thu, 09 Jun 2022 16:58: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=@outlook.com header.s=selector1 header.b=pDTyN9x8; arc=fail (body hash mismatch); 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=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 69E8068B8AF; Fri, 10 Jun 2022 02:56:33 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-oln040092074013.outbound.protection.outlook.com [40.92.74.13]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 06E6668B8A4 for ; Fri, 10 Jun 2022 02:56:30 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Cz6XaD8Uzg7d+6CY6eEF754M6edKTBBRiRc8KKvxzaV4kqKHN8CRKvTXeLHfvGHCTDJLC+TGzYjORlcEpifVpTlM5tEWnJLWM53GsXC0ZEEXp9Oie2HYLnELfi+0Qr1xlTHdbZX0M7ZdBfYyT92YmSoWRr1F+ijTyvhB3zc5okvBV2fBhuSRLDPPp/2ygtSnAEvPBfGZFV/8LhK0+CgBzrlYAD4LpAAtx39nOtEtj/yqb1/9zJl+9WowWt35bVLe4hUpgUcXbBBRmZA38z2UKii0u8pBoR8xH8yaCxumOH/HMUnelpXgvkvo69uTHBWVWcv7vuyvNDNCXylj78AFRg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=7HAJou86PfcOCZi51pIHhzqMVMlnh2d6hwmhIQ7wX/M=; b=c5YSYiMojL70F+bx39vXI0kPc9hU0vG4UmRfHBYzHcy1haDCzDW/qMukQ8V1KaTmWtDtzuAW5JEBUuZDOv+dawsq38q4zPNEE/ltcEkEOtwdmw0rccDruju8tlS+75IEg9ouXiLKOQaKtQIwqTTyfvOQV3PqnDvBkOfMrRbJhFdtxo4liLFB+Et/Lz+3Y8kPcl15JWflMOVGQUVDUPXrzzLYKRc9Xp8L5sxf8/KKrSyTQAQ1WpgXZCnT/scosgkD+DfnII0cyN3tCXt0QVbEVLGBBHr+ieFouQkTXp+yKKYlY6f1tUleb7TZqY6CBTmyMgO9AtL6xdNP9IkFOyhZhg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=7HAJou86PfcOCZi51pIHhzqMVMlnh2d6hwmhIQ7wX/M=; b=pDTyN9x8Rg0KDOkOUF75+3v4fvNr4CCu7AwoIyLysf3kOPYkMXwIl3ksYK/TG71iS93qKuSIl+ECutOqL7CkbHd9xY0pc8nYJ1GYpziJlZE4jSBLG0NeKv4eVBy/X+CQWOjjBazrwnSJkuQ7lnB2ySHuZ/4Yb9kv72lucwpxoy0sTZ82VaLgnvxYz1i3j3I2WgOff8GEknRLn5o60YlFQJZvJxEaLmUf5rMMTVqo6cCo7pRs7F+LpcyoNm1T36azyEl3MzlWuC32U03VE7uN/N8ftkye1MpkFOIa7B9GAArgn2IqMHmrYJbGuga93DLtQDqPsrr0wUgt2tQbdYc8+w== Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) by AM0PR01MB5809.eurprd01.prod.exchangelabs.com (2603:10a6:208:16f::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5332.12; Thu, 9 Jun 2022 23:56:29 +0000 Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c]) by DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c%10]) with mapi id 15.20.5332.013; Thu, 9 Jun 2022 23:56:29 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Fri, 10 Jun 2022 01:55:00 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [Iwnm73pTvoNPKUeKd46ZsmE+azB4PAlh] X-ClientProxiedBy: AM5PR04CA0005.eurprd04.prod.outlook.com (2603:10a6:206:1::18) To DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) X-Microsoft-Original-Message-ID: <20220609235523.458689-18-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 574f34b2-1010-4c1e-f756-08da4a73abc5 X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiTijo6adWu98SHbtEySq1lKf1z/Z0tSEnyEsnFmWbZzSf6aSOVFT5cWNazzZWxWQPa2haeXIt8Ng2l7yc9d6jblHJZQrSpjBz0hP4SZd21tuSIU1122iZEtchggsE3HzM6CsGCvbEDD13mXc17nLC9aOAWRJyQIYnqRA6evAF7VOcKIKTKF9J2oBlraxt7RNr6UTaooj0745Y/SA667ckO5h532p6KzVrylYE2hJkkGzk01j7UdO3ekyl7TSHchWbxsKxI8Bkpwe1Xm1WGSoDqDGWqtMGzL6c/QQfbhTAPM4npxd2liMIXyj3MTwbvSa7M6dJRO/yGoHezGkG5d5dzhTqDhQbZ9vd2g0Rp4FL9AdXScjmStyzzunU5PbiqX9DoUqyxoOdF+jD65ORIDV6DJyYLUWxDTR6BAEl6u4V8+1a+WdkV5xFTgKc+XE919kUeZLLw6b0S06jV7ZFGeJaCOcrouPNRNeA4jm1imqMwmhf1/CxbpV6IdXcSu8+2vr3LpMZu3Q3BIIawpWSE1/DxPFUL2HU2Go6p1fO7RRZdWIS6OFmepFFh+CTgxFNEDzcozEdnxM1PTuC/Jb34FOuBEC+YcKGfylZZ7xeZEtFfH6Xm+gfaaVaM5Mz2Rz+11+qiCV1knAH3KO4OHbWemjCgEy//Rr3hsOt0nvdboKWFo2qxHyBau53SqEiC7/fcjkAmXHrK6XZ1ZCG7niT5/ABNHmhM3D/OwaV9cEsJ483Q8uF8CJfHiVpQ0TBVwScO7IMg= X-MS-TrafficTypeDiagnostic: AM0PR01MB5809:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: yWUyUtnw/RJXfzJpTubsmYfL5X7QxbxHY8t0Dr4biiQWeeQwTgbKOouzk4MqazIgfLoqnc4usOSlEoSH4cabV7gkAj/Xst6qahTlBODDRHo/A18dQvzIXeYz/6xPxgQ0fXH9V8m3b2WABgCwILvx7d5BYWhI7A+yzzfnSWUDhOFTXCs7bfzj+fJESp6cTtoPK/mpTsisRiZjzKRUgRkVPK2bpQDUqYAoUoTmq+m1JujlzWvtcdKYTvtLPsAZ93mEhkqR97oT+JpGrN+0YAJVM2qpiSHIK4UtrVQ53Fq+i5EdkVRJ8yghUfDZKzwuW/1193q/Hm1aysRhD3r+64rqsZyp8YutlXBbRomMEbQoax8RsrAUIDkMLxIKnj8pOmOqOBCNJsNtI6t2WX5cRzEy0BHeDP/6JF6wqnhGSswr4YRotFfxNcdp9KARD7R2GN7DpbtNe6i+bgalytsvALB0rNllQzXv2ukRj0nuKK9FpkTPGbHrWVwdb+KOoJNfZxqdyh0keXB/pQOOWzBNuzCyb7pRnHT8NX2GnOdyzN1DZwgD5vFDm8bRdc0tb8rRgwE1w8NWEUKrUn2RTtVzjxv5uQ== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: ajYpin34y9yY398SrNQV9UzaYkJLa4ykC3jxpNAFMR6+Irjy8ntyyuPvVRbDZAGCLZSWy05NtAxXoIhldvr5Yt5JXpMAu5ZIe8LP9s10Oi9PprhrZ48BKn7iOso1s7okTgs/GY6ylsTTYlxBqbxaTs+up67AiLGRmkOaXbeAL8bpcRnvmDqgjAWsjekiVsTWij9RG5EkWKCYh9G25Yf/ho4WsYM8GnJH3qBs7NHFkItmODKhkx4DdSkxVYRvPkcPa5WnyEyoNp2s4++x+m5MN3JQWdGUuK5O8LQNXF5opUV6P5OEiw5GmydL5a6NwGxiasHLCP7kkdur7oI+eGZlYBH/BP6ouaASvjgupc1+oawun661j591qcLSIe7B9Xmxp288nFoIM3eaxGJ63iGLyQwemRoMI+UdJnRjhCmf4ZnGzGKi7AxBNGcml7aucIQ97WMVLjt79nmsf+bIxrZRZBq5ltVWKEmSn0tQ2Kuvug7xH43qRE/IE0aJY9EfmVypdRWfNoL2rRG1LWZuuzQo/7f5D/ZkWVlTnG8+EeC9xY8rSxIOT+oXme+yKZoJbALIDH/vxUm4AgD3L9h5rNdv13JJVdLxLGhTkAsJUUar8iaHnfjN+f5bZpVdYNsT62Yv94U8Sq3F0ZkIrf/zCYYrHaogP+ZMIwyCSQ2q3UcKBmwSSbVaNNQUWZm1Ytrr7mjC+DGfhSmtsIVUxR5hOsB0qpsUgl/frrm59F2hTiDDVMx7tY39RYLISbREje6SYIjNFF0VnqHMLwNr2QobTI0YYoA5K4AIQ/solKr2hX07inyaqiQjqOIn/sy0NUr7SjfWTvSV+qtbuMLegxwLx+r9MrkuUIeu/qmXlJTCtXm6XKXFxkEUSiC8pct0ymH7/FkiD8/zYQP6LjIFe4bVEK15roldkZdCUPjKVs9jv1lJ1h6+QIbA79VU3/tcvq1b25HJz3TgNvkpWkl04anh0dqy073Ui9IINMM0N3l+w5M59Sz2gqDhXFJCz+hzIMO8Hab/64ifBiyvG4kQycdwO8tF9EUR2Dqjgpx2MOBAhA4nFkdcZ0Uayti+U497zaLlFjD3V9jazYOVVRXBcrB0uNQxj9wvE6xcvpuJKD/MBzw6LhQfvwpkHCj20LiTG/esF1zDW/W6nzpaltLqe2t8sa/WBHnhlrJ3BA9m37fh+DmOKJZokWIOTFWa81aEXu/rNU700HR88R+Z1saq55g4Af7zta1LCPgZhEvgLP3eaoRYCkw3ESUJidYHCFM4Gdt2uWsbgOmdqU4/J3j53p4eH0xMiwg4PlGphmCGL+/PG7+aIKMSgqqTZXHxL6eqzVqcMwOESC0h6AIoorjVCTAT91rSzGEDTXgbbPqYAEriKMpuLTpCnFPkSCvggJXb9+0GoBwkUnFX2bZN4y7opx3Ou0YRjSVk8rA4blGrAjhJnxbkKM0kiids7wtDoixOI5hTPpThDiDVnaJjW6KeBtrJUG0rFw== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 574f34b2-1010-4c1e-f756-08da4a73abc5 X-MS-Exchange-CrossTenant-AuthSource: DB6PR0101MB2214.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jun 2022 23:56:29.2418 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR01MB5809 Subject: [FFmpeg-devel] [PATCH 18/41] avcodec/x86/h264_intrapred_init: Disable overridden functions on x64 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 Cc: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: U5L6sRx+PFdn Content-Length: 11954 x64 always has MMX, MMXEXT, SSE and SSE2 and this means that some functions for MMX, MMXEXT, SSE and 3dnow are always overridden by other functions (unless one e.g. explicitly disables SSE2). This commit therefore disables such H.264-intrapred-dsp functions at compile-time. Signed-off-by: Andreas Rheinhardt --- libavcodec/x86/h264_intrapred.asm | 26 +++++++++++++++++++++++++ libavcodec/x86/h264_intrapred_10bit.asm | 16 +++++++++++++++ libavcodec/x86/h264_intrapred_init.c | 20 +++++++++++++++---- 3 files changed, 58 insertions(+), 4 deletions(-) diff --git a/libavcodec/x86/h264_intrapred.asm b/libavcodec/x86/h264_intrapred.asm index b36c198fbb..9426598a63 100644 --- a/libavcodec/x86/h264_intrapred.asm +++ b/libavcodec/x86/h264_intrapred.asm @@ -48,6 +48,7 @@ cextern pw_8 ; void ff_pred16x16_vertical_8(uint8_t *src, ptrdiff_t stride) ;----------------------------------------------------------------------------- +%if ARCH_X86_32 INIT_MMX mmx cglobal pred16x16_vertical_8, 2,3 sub r0, r1 @@ -63,6 +64,7 @@ cglobal pred16x16_vertical_8, 2,3 dec r2 jg .loop REP_RET +%endif INIT_XMM sse cglobal pred16x16_vertical_8, 2,3 @@ -114,8 +116,10 @@ cglobal pred16x16_horizontal_8, 2,3 REP_RET %endmacro +%if ARCH_X86_32 INIT_MMX mmx PRED16x16_H +%endif INIT_MMX mmxext PRED16x16_H INIT_XMM ssse3 @@ -176,8 +180,10 @@ cglobal pred16x16_dc_8, 2,7 REP_RET %endmacro +%if ARCH_X86_32 INIT_MMX mmxext PRED16x16_DC +%endif INIT_XMM sse2 PRED16x16_DC INIT_XMM ssse3 @@ -187,6 +193,7 @@ PRED16x16_DC ; void ff_pred16x16_tm_vp8_8(uint8_t *src, ptrdiff_t stride) ;----------------------------------------------------------------------------- +%if ARCH_X86_32 %macro PRED16x16_TM 0 cglobal pred16x16_tm_vp8_8, 2,5 sub r0, r1 @@ -227,6 +234,7 @@ INIT_MMX mmx PRED16x16_TM INIT_MMX mmxext PRED16x16_TM +%endif INIT_XMM sse2 cglobal pred16x16_tm_vp8_8, 2,6,6 @@ -565,6 +573,7 @@ cglobal pred16x16_plane_%1_8, 2,9,7 REP_RET %endmacro +%if ARCH_X86_32 INIT_MMX mmx H264_PRED16x16_PLANE h264 H264_PRED16x16_PLANE rv40 @@ -573,6 +582,7 @@ INIT_MMX mmxext H264_PRED16x16_PLANE h264 H264_PRED16x16_PLANE rv40 H264_PRED16x16_PLANE svq3 +%endif INIT_XMM sse2 H264_PRED16x16_PLANE h264 H264_PRED16x16_PLANE rv40 @@ -747,10 +757,12 @@ ALIGN 16 REP_RET %endmacro +%if ARCH_X86_32 INIT_MMX mmx H264_PRED8x8_PLANE INIT_MMX mmxext H264_PRED8x8_PLANE +%endif INIT_XMM sse2 H264_PRED8x8_PLANE INIT_XMM ssse3 @@ -794,8 +806,10 @@ cglobal pred8x8_horizontal_8, 2,3 REP_RET %endmacro +%if ARCH_X86_32 INIT_MMX mmx PRED8x8_H +%endif INIT_MMX mmxext PRED8x8_H INIT_MMX ssse3 @@ -937,6 +951,7 @@ cglobal pred8x8_dc_rv40_8, 2,7 ; void ff_pred8x8_tm_vp8_8(uint8_t *src, ptrdiff_t stride) ;----------------------------------------------------------------------------- +%if ARCH_X86_32 %macro PRED8x8_TM 0 cglobal pred8x8_tm_vp8_8, 2,6 sub r0, r1 @@ -976,6 +991,7 @@ INIT_MMX mmx PRED8x8_TM INIT_MMX mmxext PRED8x8_TM +%endif INIT_XMM sse2 cglobal pred8x8_tm_vp8_8, 2,6,4 @@ -1333,6 +1349,7 @@ PRED8x8L_VERTICAL ; int has_topright, ptrdiff_t stride) ;----------------------------------------------------------------------------- +%if ARCH_X86_32 INIT_MMX mmxext cglobal pred8x8l_down_left_8, 4,5 sub r0, r3 @@ -1440,6 +1457,7 @@ cglobal pred8x8l_down_left_8, 4,5 por mm1, mm0 movq [r0+r3*1], mm1 RET +%endif %macro PRED8x8L_DOWN_LEFT 0 cglobal pred8x8l_down_left_8, 4,4 @@ -1534,6 +1552,7 @@ PRED8x8L_DOWN_LEFT ; int has_topright, ptrdiff_t stride) ;----------------------------------------------------------------------------- +%if ARCH_X86_32 INIT_MMX mmxext cglobal pred8x8l_down_right_8, 4,5 sub r0, r3 @@ -1665,6 +1684,7 @@ cglobal pred8x8l_down_right_8, 4,5 por mm0, mm1 movq [r0+r3*1], mm0 RET +%endif %macro PRED8x8L_DOWN_RIGHT 0 cglobal pred8x8l_down_right_8, 4,5 @@ -1786,6 +1806,7 @@ PRED8x8L_DOWN_RIGHT ; int has_topright, ptrdiff_t stride) ;----------------------------------------------------------------------------- +%if ARCH_X86_32 INIT_MMX mmxext cglobal pred8x8l_vertical_right_8, 4,5 sub r0, r3 @@ -1892,6 +1913,7 @@ cglobal pred8x8l_vertical_right_8, 4,5 PALIGNR mm5, mm0, 7, mm1 movq [r4+r3*2], mm5 RET +%endif %macro PRED8x8L_VERTICAL_RIGHT 0 cglobal pred8x8l_vertical_right_8, 4,5,7 @@ -2192,6 +2214,7 @@ PRED8x8L_HORIZONTAL_UP ; int has_topright, ptrdiff_t stride) ;----------------------------------------------------------------------------- +%if ARCH_X86_32 INIT_MMX mmxext cglobal pred8x8l_horizontal_down_8, 4,5 sub r0, r3 @@ -2306,6 +2329,7 @@ cglobal pred8x8l_horizontal_down_8, 4,5 PALIGNR mm3, mm4, 6, mm4 movq [r0+r3*1], mm3 RET +%endif %macro PRED8x8L_HORIZONTAL_DOWN 0 cglobal pred8x8l_horizontal_down_8, 4,5 @@ -2508,8 +2532,10 @@ cglobal pred4x4_tm_vp8_8, 3,6 REP_RET %endmacro +%if ARCH_X86_32 INIT_MMX mmx PRED4x4_TM +%endif INIT_MMX mmxext PRED4x4_TM diff --git a/libavcodec/x86/h264_intrapred_10bit.asm b/libavcodec/x86/h264_intrapred_10bit.asm index 629e0a72e3..e978d91ff1 100644 --- a/libavcodec/x86/h264_intrapred_10bit.asm +++ b/libavcodec/x86/h264_intrapred_10bit.asm @@ -411,8 +411,10 @@ cglobal pred8x8_dc_10, 2, 6 RET %endmacro +%if ARCH_X86_32 INIT_MMX mmxext PRED8x8_DC pshufw +%endif INIT_XMM sse2 PRED8x8_DC pshuflw @@ -526,8 +528,10 @@ cglobal pred8x8l_128_dc_10, 4, 4 RET %endmacro +%if ARCH_X86_32 INIT_MMX mmxext PRED8x8L_128_DC +%endif INIT_XMM sse2 PRED8x8L_128_DC @@ -1033,8 +1037,10 @@ cglobal pred16x16_vertical_10, 2, 3 REP_RET %endmacro +%if ARCH_X86_32 INIT_MMX mmxext PRED16x16_VERTICAL +%endif INIT_XMM sse2 PRED16x16_VERTICAL @@ -1057,8 +1063,10 @@ cglobal pred16x16_horizontal_10, 2, 3 REP_RET %endmacro +%if ARCH_X86_32 INIT_MMX mmxext PRED16x16_HORIZONTAL +%endif INIT_XMM sse2 PRED16x16_HORIZONTAL @@ -1103,8 +1111,10 @@ cglobal pred16x16_dc_10, 2, 6 REP_RET %endmacro +%if ARCH_X86_32 INIT_MMX mmxext PRED16x16_DC +%endif INIT_XMM sse2 PRED16x16_DC @@ -1135,8 +1145,10 @@ cglobal pred16x16_top_dc_10, 2, 3 REP_RET %endmacro +%if ARCH_X86_32 INIT_MMX mmxext PRED16x16_TOP_DC +%endif INIT_XMM sse2 PRED16x16_TOP_DC @@ -1172,8 +1184,10 @@ cglobal pred16x16_left_dc_10, 2, 6 REP_RET %endmacro +%if ARCH_X86_32 INIT_MMX mmxext PRED16x16_LEFT_DC +%endif INIT_XMM sse2 PRED16x16_LEFT_DC @@ -1193,7 +1207,9 @@ cglobal pred16x16_128_dc_10, 2,3 REP_RET %endmacro +%if ARCH_X86_32 INIT_MMX mmxext PRED16x16_128_DC +%endif INIT_XMM sse2 PRED16x16_128_DC diff --git a/libavcodec/x86/h264_intrapred_init.c b/libavcodec/x86/h264_intrapred_init.c index a95cfbca55..b4b04beff5 100644 --- a/libavcodec/x86/h264_intrapred_init.c +++ b/libavcodec/x86/h264_intrapred_init.c @@ -193,10 +193,13 @@ av_cold void ff_h264_pred_init_x86(H264PredContext *h, int codec_id, if (bit_depth == 8) { if (EXTERNAL_MMX(cpu_flags)) { +#if ARCH_X86_32 h->pred16x16[VERT_PRED8x8 ] = ff_pred16x16_vertical_8_mmx; h->pred16x16[HOR_PRED8x8 ] = ff_pred16x16_horizontal_8_mmx; +#endif if (chroma_format_idc <= 1) { h->pred8x8 [VERT_PRED8x8 ] = ff_pred8x8_vertical_8_mmx; +#if ARCH_X86_32 h->pred8x8 [HOR_PRED8x8 ] = ff_pred8x8_horizontal_8_mmx; } if (codec_id == AV_CODEC_ID_VP7 || codec_id == AV_CODEC_ID_VP8) { @@ -214,23 +217,28 @@ av_cold void ff_h264_pred_init_x86(H264PredContext *h, int codec_id, } else { h->pred16x16[PLANE_PRED8x8] = ff_pred16x16_plane_h264_8_mmx; } +#endif } } if (EXTERNAL_MMXEXT(cpu_flags)) { h->pred16x16[HOR_PRED8x8 ] = ff_pred16x16_horizontal_8_mmxext; +#if ARCH_X86_32 h->pred16x16[DC_PRED8x8 ] = ff_pred16x16_dc_8_mmxext; +#endif if (chroma_format_idc <= 1) h->pred8x8[HOR_PRED8x8 ] = ff_pred8x8_horizontal_8_mmxext; h->pred8x8l [TOP_DC_PRED ] = ff_pred8x8l_top_dc_8_mmxext; h->pred8x8l [DC_PRED ] = ff_pred8x8l_dc_8_mmxext; h->pred8x8l [HOR_PRED ] = ff_pred8x8l_horizontal_8_mmxext; h->pred8x8l [VERT_PRED ] = ff_pred8x8l_vertical_8_mmxext; - h->pred8x8l [DIAG_DOWN_RIGHT_PRED ] = ff_pred8x8l_down_right_8_mmxext; - h->pred8x8l [VERT_RIGHT_PRED ] = ff_pred8x8l_vertical_right_8_mmxext; h->pred8x8l [HOR_UP_PRED ] = ff_pred8x8l_horizontal_up_8_mmxext; +#if ARCH_X86_32 h->pred8x8l [DIAG_DOWN_LEFT_PRED ] = ff_pred8x8l_down_left_8_mmxext; + h->pred8x8l [DIAG_DOWN_RIGHT_PRED ] = ff_pred8x8l_down_right_8_mmxext; + h->pred8x8l [VERT_RIGHT_PRED ] = ff_pred8x8l_vertical_right_8_mmxext; h->pred8x8l [HOR_DOWN_PRED ] = ff_pred8x8l_horizontal_down_8_mmxext; +#endif h->pred4x4 [DIAG_DOWN_RIGHT_PRED ] = ff_pred4x4_down_right_8_mmxext; h->pred4x4 [VERT_RIGHT_PRED ] = ff_pred4x4_vertical_right_8_mmxext; h->pred4x4 [HOR_DOWN_PRED ] = ff_pred4x4_horizontal_down_8_mmxext; @@ -252,11 +260,12 @@ av_cold void ff_h264_pred_init_x86(H264PredContext *h, int codec_id, } } if (codec_id == AV_CODEC_ID_VP7 || codec_id == AV_CODEC_ID_VP8) { - h->pred16x16[PLANE_PRED8x8 ] = ff_pred16x16_tm_vp8_8_mmxext; h->pred8x8 [DC_PRED8x8 ] = ff_pred8x8_dc_rv40_8_mmxext; - h->pred8x8 [PLANE_PRED8x8 ] = ff_pred8x8_tm_vp8_8_mmxext; h->pred4x4 [TM_VP8_PRED ] = ff_pred4x4_tm_vp8_8_mmxext; h->pred4x4 [VERT_PRED ] = ff_pred4x4_vertical_vp8_8_mmxext; +#if ARCH_X86_32 + h->pred16x16[PLANE_PRED8x8 ] = ff_pred16x16_tm_vp8_8_mmxext; + h->pred8x8 [PLANE_PRED8x8 ] = ff_pred8x8_tm_vp8_8_mmxext; } else { if (chroma_format_idc <= 1) h->pred8x8 [PLANE_PRED8x8] = ff_pred8x8_plane_8_mmxext; @@ -267,6 +276,7 @@ av_cold void ff_h264_pred_init_x86(H264PredContext *h, int codec_id, } else { h->pred16x16[PLANE_PRED8x8 ] = ff_pred16x16_plane_h264_8_mmxext; } +#endif } } @@ -338,6 +348,7 @@ av_cold void ff_h264_pred_init_x86(H264PredContext *h, int codec_id, h->pred4x4[DC_PRED ] = ff_pred4x4_dc_10_mmxext; h->pred4x4[HOR_UP_PRED ] = ff_pred4x4_horizontal_up_10_mmxext; +#if ARCH_X86_32 if (chroma_format_idc <= 1) h->pred8x8[DC_PRED8x8 ] = ff_pred8x8_dc_10_mmxext; @@ -349,6 +360,7 @@ av_cold void ff_h264_pred_init_x86(H264PredContext *h, int codec_id, h->pred16x16[LEFT_DC_PRED8x8 ] = ff_pred16x16_left_dc_10_mmxext; h->pred16x16[VERT_PRED8x8 ] = ff_pred16x16_vertical_10_mmxext; h->pred16x16[HOR_PRED8x8 ] = ff_pred16x16_horizontal_10_mmxext; +#endif } if (EXTERNAL_SSE2(cpu_flags)) { h->pred4x4[DIAG_DOWN_LEFT_PRED ] = ff_pred4x4_down_left_10_sse2;