From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <ffmpeg-devel-bounces@ffmpeg.org>
Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100])
	by master.gitmailbox.com (Postfix) with ESMTPS id 321E94D882
	for <ffmpegdev@gitmailbox.com>; Tue, 25 Feb 2025 23:03:30 +0000 (UTC)
Received: from [127.0.1.1] (localhost [127.0.0.1])
	by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id CD93668CD66;
	Wed, 26 Feb 2025 01:03:26 +0200 (EET)
Received: from EUR05-DB8-obe.outbound.protection.outlook.com
 (mail-db8eur05olkn2029.outbound.protection.outlook.com [40.92.89.29])
 by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 0972E68B63D
 for <ffmpeg-devel@ffmpeg.org>; Wed, 26 Feb 2025 01:03:20 +0200 (EET)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=DGTnAF7tb5O4aDYl2cspl4Ot5lXCsWw0QNJa+4XY5/aptBncDbJe4o73epXKJvAIkq24nMhylMbgt6pODI+29dm2AL0CVaPobfZbeuAuqdRpQq7pz4D8QiYGgIFkcf9juKvOqN4ZNhoGzfssDYbGNnehbnB2vgCO+8hbX7VkZxhjm5+HB7QQl6Slri3G7OkH+OA6H4Q1gzFUgqHAo5pjKjWC1PzRCBkU3hPwQ03C9avKZrv4SnhUCniTf+2rdiYgp24afWJClFKbNJNMJNrZOwvR91FNiErzvxQg/bOw8h1LTtb9e2BD9jFmhB+JEEfDJ1ud2+JzMFdLaXNzTMeH2A==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; 
 s=arcselector10001;
 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=ByHKL7c1hexr6J6Q2F1BzavBMey6iR0uHXPMaXv1bC0=;
 b=L31tqUIUXrLculTq+0EKWLTCjzZgW105WVJK35gVTcA5lLEEV9ucN3X5Ho1mb166MRGRRaTfZlT4JUobjIYiN/tja6cHSKuiN/LdS40L3u7wkK1SA6QhmmnqPPwQKkT+qLX85sS7u+YVylSoSIrXrggRabjihFrMTzx7Ij8D5BM5pZ3YmPCqdQBL6zHlpsB5dpxPZT3yuGaokrGsYYw/cUSlqCJsBXWQ0dNrohraEIRptSNRJ3Orr+p/cboY+GX3XNHKNzvN3Y8FGxb3bZ44HB7Jq8jVkzCekYQ+PGIC8kMrgKqODZO1grF4r2F4jRBxtgjOFKkZ+T7fjp8CMiv6DA==
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=ByHKL7c1hexr6J6Q2F1BzavBMey6iR0uHXPMaXv1bC0=;
 b=ui7cqC9W1PErQhOakLWsiY+pAeyOEp25NCCJgdRz3NwF06NDvtKQ7KEXBkBPuZIQFgVOpVz0Rs52gR6OEuiwU41vB5kKgqFlZ6O6PYXybdbsxH+3uH4rg063vs1YrASgQdDbCxgdeYG/pGX2lFbOlDgg9GdEJ9EcvjeAxpLsycXhRHiVGoCOw4kDV5EtJwTgzoJ58CcQxo5zjRioDvu20VLCT747YB5QQdS3tFA1TnJ+KInFYEPampTFtfb20xIkjGSsoM+B7nym+vf4UuhXqkFLAJeLw88+Z5YntvP8OzHON/oyE97jTTIxlbP0abalFmabI8lFEHbSS1xeZuA57w==
Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14)
 by PRAP250MB0709.EURP250.PROD.OUTLOOK.COM (2603:10a6:102:295::22)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8489.14; Tue, 25 Feb
 2025 23:03:18 +0000
Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM
 ([fe80::384d:40d4:ecb7:1c9]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM
 ([fe80::384d:40d4:ecb7:1c9%5]) with mapi id 15.20.8489.014; Tue, 25 Feb 2025
 23:03:18 +0000
Message-ID: <AS8P250MB0744B78CF2EF573EE5387E638FC32@AS8P250MB0744.EURP250.PROD.OUTLOOK.COM>
Date: Wed, 26 Feb 2025 00:03:17 +0100
User-Agent: Mozilla Thunderbird
To: ffmpeg-devel@ffmpeg.org
References: <20250225213717.3373852-1-prka@google.com>
Content-Language: en-US
From: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
In-Reply-To: <20250225213717.3373852-1-prka@google.com>
X-ClientProxiedBy: FR4P281CA0356.DEUP281.PROD.OUTLOOK.COM
 (2603:10a6:d10:f4::20) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM
 (2603:10a6:20b:541::14)
X-Microsoft-Original-Message-ID: <0ced6db1-1889-4121-a4a9-b52d1e466ec0@outlook.com>
MIME-Version: 1.0
X-MS-Exchange-MessageSentRepresentingType: 1
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|PRAP250MB0709:EE_
X-MS-Office365-Filtering-Correlation-Id: 741c2521-c0df-40b1-898f-08dd55f097a3
X-Microsoft-Antispam: BCL:0;
 ARA:14566002|6090799003|15080799006|8060799006|19110799003|5072599009|7092599003|461199028|10035399004|440099028|3412199025;
X-Microsoft-Antispam-Message-Info: =?utf-8?B?WXJmTHYyUWxBb0I5dFJqUG9mdmpCUGhyYUpOR1F3ZGF3WjljQ3hFR3lZcUh4?=
 =?utf-8?B?T1JsRzY1WncreElTdmtMMDF4MDRrNTdVcHpFUGRpQ0VRQ2dhbzZIMG9rK0lh?=
 =?utf-8?B?Q2tmUlFHYVIvM2lTejM2Rm5XZkVtVVQ3d2xLU1JianZHQTJaWjNBU2NoYmd5?=
 =?utf-8?B?RkFQd1ZZS292OXZNcUpMWVhtUVRBa000Vk4yQmJsNkZBdmJoS3FndmJMcXYw?=
 =?utf-8?B?YjgvelZmT3ZYVmhkTk1SaFplUExpOTFxUGpvK3hpd2pISGdpVnJvbXpBd0Vs?=
 =?utf-8?B?T0VHT1JiMGdTRnBEaG50OWpuVnhoRGZ0SEtBWDF5bCtkMTRmWlkzY2JQNG1O?=
 =?utf-8?B?cncvYkh5NWxvNmo0ZWFxRW5PcW4zdTJQS2xiclZzMGN2VFRrajd5d0FxQkJy?=
 =?utf-8?B?VnJQVXMycnE0b21JNmY5c2hHUXF4WkZsamcxOGRtcWpMQW42dHRWM2cxZk9l?=
 =?utf-8?B?bTQ1c0kyZGpjNXQrd0tvSUk5YzE3TXEvVmtXejZUTXhmL2xkT2Z1MFExT3l0?=
 =?utf-8?B?NVl4VjJWczVhWXpjamI3bmo1UkdEeUhySTRBVlE3MkZJMTZadnJaS0w0RXgv?=
 =?utf-8?B?aWNtTS9jSlJFZGNPRDJEZTlLcitOTEVsUWNqd0xtRGlXY3FDRzUwMStiUTdV?=
 =?utf-8?B?cXJyYmUzN3VWV3VFYjUyYUhpRmRYTGYvMEJYRCtUY0RNeE1LQTZLeThNRFox?=
 =?utf-8?B?bGxPcVM3OXhtZ0hzSGNBUS9BZzV6VWV0Y0JpWlBHWTdzOXp2TklxdnBKQkpo?=
 =?utf-8?B?QW1nTUlBbDZSSmFlZ1BYSVc3QWFCdkpXMExvMkt0TzJaejVpc2NlT2hxZXVv?=
 =?utf-8?B?OHg3ZjVuWUszZ2crNTNLblBjVjB6YVprZ1lBU09xZ0dtMmRqSzZlc1YrWGdv?=
 =?utf-8?B?SGVPeHVwS2FlUndqemNud0xyRko4bTdrVzE0eWVzbGZKVlM0YTNPRGwyWkxt?=
 =?utf-8?B?MTd1Z3FhbWlVRi83Q1NQOFpUMGpMc1JhS2NMUnBBUUVBN0pLbGNIaFlsSXpl?=
 =?utf-8?B?RzlBM0hsaU5wT2tmd2xZdmd0YzR3NTV6aXlTMnBKNndLKzg2NFNVcmNncXRD?=
 =?utf-8?B?QUFodVJySWIzL2Yxb3A2YzJJY0RsM1R3TGl2MytGczJsa0VneDA4RERvaTAv?=
 =?utf-8?B?YUt2dG5xeDJjYmUzZFhINTcvcnd1V0VXMDJ4QXl0QVFPdEVZZWVYNlowdHNs?=
 =?utf-8?B?S3VYN2RlWnA4VS93TklvZThiZldicWFYVHpVS0hNYkJxeTR2TnlUTy94djNu?=
 =?utf-8?B?ZXdpdGhEYXp5UW0zeHJhc0M4RUtmWldrSTR2dUtTbWRoQ0RvbUlmSENnZ2FI?=
 =?utf-8?B?R0tqRVEwdmt2TVZGeU1oYTBySTMzMlVpbWtLSGNCVWdjLytZcVJBa1dzNHhC?=
 =?utf-8?B?WmJ6SlREenVsdTdSY1pVcWVnZUo4alcvb1hWTm13MTc3Q3JzWFMxODdmb29h?=
 =?utf-8?B?elgxZWI1cXJhREJkTExrckxxVmNjUnNuSWRvRDV6b09BRmFIcER6VHAvRERu?=
 =?utf-8?B?VzRXT2tLM25kSWhmZnJtWkFHemhQR3V0VDJsdkR3OWhpS2pGelBMSkh6OHIw?=
 =?utf-8?B?S3VtUT09?=
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?TVN1VlhaaWVuUmJmOWlJV2t2YU1zcGxleDJEd3ROaGtHL2dYZHk2TFdibHd5?=
 =?utf-8?B?aGRXSkdpTzlJVWVMeGkxT2NIYndBcEcyNkhUU3Y2Y0VyQXVpbzN0aWlhZFkv?=
 =?utf-8?B?YklyVWkvZkQ1UTN6aFR5U25UY1dHYWxETTcvQTNaZjNESldRUHluV0FVQ1FD?=
 =?utf-8?B?UVNpdUpoUGRjN1kvNFVaNkpHeGpGRkVzT1p4RkNpWEROV3VwNzErRUpjb0Vx?=
 =?utf-8?B?ZFBCei9sMWErNkkwYndQRXN1R0VuY3FRSE9ETEF4Y2toWllCbEhwcFRzeVVF?=
 =?utf-8?B?Q3BOdU1FQWpYSHFDc2tPZklEeWd4aXRaMHlzajBTbUtaeW5UL3FIay9zNGJF?=
 =?utf-8?B?T1NhQ0E4eVZMMU1xVCtjMWJiRGlWQm5UVlpuS1BHQng0R05KbFoyMEN6UXdm?=
 =?utf-8?B?MjMyWUFsdGpjSUIwZ1ByNEo5alpFT3pqNlBOcUNtaWZmbHgrOVNMZEZIWUFM?=
 =?utf-8?B?QmM5YWt1RG1mRWlZcWFEdUNwVDFOWVdlcnk3NndhN1lIVzg2NEp5dzMzNnVp?=
 =?utf-8?B?WnloT0ZQQ1p6U1F2SWVXRElGZVh2ME9yWUUvUTZwN1BmSkdzc3Bnd0RWTXV1?=
 =?utf-8?B?TlpNSEF1aHh5TUJMZnB5cytGUVJOeFMzYVRQZXFIMW01S1pvVnpFbm5DY3or?=
 =?utf-8?B?WFh4cC9OOXlUcjFIU2NrTm4rTTRFd29SdHdrdXZ5cStQNmpXenZBdTAzS1p0?=
 =?utf-8?B?azZ0S2hXRzd3VDZ5NzJSWHhTcjBTRmRocU9pVHFkV2xOTzJ4TElnd1AwMy83?=
 =?utf-8?B?V3pTSHVzMEJlUURqRW9RUTFNOUx3YmhqYmZRRHRHcmNCQkpYZytaSHF3Nk5H?=
 =?utf-8?B?ZVgwdEdEN3NLeXA3QzVIeWMwUFZyaWg1VlR2RVZCQThNL0FLNmJsUXpKMnNS?=
 =?utf-8?B?S0ZJVHN2VjZGbE91TysrWmw4S1RWbnUvRTdDQUR1VjR0MEJsOERsMEY5YUtT?=
 =?utf-8?B?RWFIYi80aThtaG1RS0k5M0p6bmppaUtHUzdVYnIvenYreDZiU05RcFlQZHpw?=
 =?utf-8?B?dGxJbHRPU2tCR3BuUnVZV3d6MExCZHF5bWdOQWJqTlV4ZGZRdkpLd2wwYjhv?=
 =?utf-8?B?SFZsVmQ2ZjA4aXB5VmRjL3lKWVV4K1hrQzRKWW5EZkxublNhSWQxNFhjeWZG?=
 =?utf-8?B?VUQ4YTZvOFVFZHIxK2gwdEFCNGdsTGF2V2xkMlJUczZHbkZKbi9ka3RuOVAx?=
 =?utf-8?B?NU1oS1RUK1BhVFBLV0NzMll3R1lyMy96ZEU1OHNZSUJyMXhDaGVlN2hxNEtH?=
 =?utf-8?B?Zm95MmdnWUxROU1DL0hDNzJRVE5oNER6QTFoSTJabGI3aXNqUTY2elJITUNY?=
 =?utf-8?B?MUJqVE1TbXZNTldpZ0drMTM2K1pBSXo1aFFmaVZ6L3FaUzVqcktUTU5DS0kr?=
 =?utf-8?B?bGRIcDJjZVB4dEdSaFVhNjJmQXc0eVp6cldXd1hUKzN3TTQvMmZHT1djTXVl?=
 =?utf-8?B?UndpMVRHdWVvTEhITXlvSFp5OWpaOTRhb0lnbzhQV0d5UHBBU3FXQnQ0TkQr?=
 =?utf-8?B?WVlRRE1SdjlOZm9Yd3d6NHVJU3VCRHJvWFJSeWtacXIxdGRZVTRZM0I5U01E?=
 =?utf-8?B?cGhkZkt4b2VNd0p1T3hVS2E3NjJ6Z0NiRE54M1BxVFM0d2MrM3NGSTVaZTV2?=
 =?utf-8?B?b0JrUzROWnk0WHZGWjdoNVE2ODBtYVZ2cm5tc0dKb0xiTjN3bEpuNFpMdGkw?=
 =?utf-8?B?RkVCeFJnemZmeW45M0RqSGxmWFZpaisyZFVnSE5BUUxuYU82NlFjMmRRPT0=?=
X-OriginatorOrg: outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 741c2521-c0df-40b1-898f-08dd55f097a3
X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Feb 2025 23:03:18.3995 (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: PRAP250MB0709
Subject: Re: [FFmpeg-devel] [PATCH] Mark C globals with small code model
X-BeenThere: ffmpeg-devel@ffmpeg.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: FFmpeg development discussions and patches <ffmpeg-devel.ffmpeg.org>
List-Unsubscribe: <https://ffmpeg.org/mailman/options/ffmpeg-devel>,
 <mailto:ffmpeg-devel-request@ffmpeg.org?subject=unsubscribe>
List-Archive: <https://ffmpeg.org/pipermail/ffmpeg-devel>
List-Post: <mailto:ffmpeg-devel@ffmpeg.org>
List-Help: <mailto:ffmpeg-devel-request@ffmpeg.org?subject=help>
List-Subscribe: <https://ffmpeg.org/mailman/listinfo/ffmpeg-devel>,
 <mailto:ffmpeg-devel-request@ffmpeg.org?subject=subscribe>
Reply-To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: ffmpeg-devel-bounces@ffmpeg.org
Sender: "ffmpeg-devel" <ffmpeg-devel-bounces@ffmpeg.org>
Archived-At: <https://master.gitmailbox.com/ffmpegdev/AS8P250MB0744B78CF2EF573EE5387E638FC32@AS8P250MB0744.EURP250.PROD.OUTLOOK.COM/>
List-Archive: <https://master.gitmailbox.com/ffmpegdev/>
List-Post: <mailto:ffmpegdev@gitmailbox.com>

Pranav Kant via ffmpeg-devel:
> By default, all globals in C/C++ compiled by clang are allocated
> in non-large data sections. See [1] for background on code models.
> For PIC (Position independent code), this is fine as long as binary is
> small but as binary size increases, users maybe want to use medium/large
> code models (-mcmodel=medium) which moves data in to large sections.
> As data in these large sections cannot be accessed using PIC code
> anymore (as it may be too far away), compiler ends up using a different
> instruction sequence when building C/C++ code -- using GOT to access
> these globals (which can be relaxed by linker at link time if binary
> ends up being smaller). However, assembly files continue to access these
> globals defined in C/C++ files using older (and invalid instruction
> sequence). So, we mark all such globals with an attribute that forces
> them to be allocated in small sections allowing them to validly be
> accessed from the assembly code.
> 
> This patch should not have any affect on builds that use small code
> model, which is the default mode.
> 
> [1] https://eli.thegreenplace.net/2012/01/03/understanding-the-x64-code-models
> ---
>  libavcodec/ac3dsp.c        | 2 +-
>  libavcodec/cabac.c         | 3 ++-
>  libavcodec/x86/constants.c | 8 ++++++++
>  libavutil/attributes.h     | 6 ++++++
>  4 files changed, 17 insertions(+), 2 deletions(-)
> 
> diff --git a/libavcodec/ac3dsp.c b/libavcodec/ac3dsp.c
> index 730fa70fff..43b4fcbda9 100644
> --- a/libavcodec/ac3dsp.c
> +++ b/libavcodec/ac3dsp.c
> @@ -104,7 +104,7 @@ static void ac3_update_bap_counts_c(uint16_t mant_cnt[16], uint8_t *bap,
>          mant_cnt[bap[len]]++;
>  }
>  
> -DECLARE_ALIGNED(16, const uint16_t, ff_ac3_bap_bits)[16] = {
> +av_mcmodel_small DECLARE_ALIGNED(16, const uint16_t, ff_ac3_bap_bits)[16] = {
>      0,  0,  0,  3,  0,  4,  5,  6,  7,  8,  9, 10, 11, 12, 14, 16
>  };
>  
> diff --git a/libavcodec/cabac.c b/libavcodec/cabac.c
> index 7d41cd2ae6..dfc3ba135a 100644
> --- a/libavcodec/cabac.c
> +++ b/libavcodec/cabac.c
> @@ -24,12 +24,13 @@
>   * Context Adaptive Binary Arithmetic Coder.
>   */
>  
> +#include "libavutil/attributes.h"
>  #include "libavutil/error.h"
>  #include "libavutil/mem_internal.h"
>  
>  #include "cabac.h"
>  
> -DECLARE_ASM_ALIGNED(1, const uint8_t, ff_h264_cabac_tables)[512 + 4*2*64 + 4*64 + 63] = {
> +av_mcmodel_small DECLARE_ASM_ALIGNED(1, const uint8_t, ff_h264_cabac_tables)[512 + 4*2*64 + 4*64 + 63] = {
>      9,8,7,7,6,6,6,6,5,5,5,5,5,5,5,5,
>      4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
>      3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
> diff --git a/libavcodec/x86/constants.c b/libavcodec/x86/constants.c
> index bc7f2b17b8..9a5af2871c 100644
> --- a/libavcodec/x86/constants.c
> +++ b/libavcodec/x86/constants.c
> @@ -18,17 +18,21 @@
>   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
>   */
>  
> +#include "libavutil/attributes.h"
>  #include "libavutil/mem_internal.h"
>  #include "libavutil/x86/asm.h" // for xmm_reg
>  #include "constants.h"
>  
> +av_mcmodel_small
>  DECLARE_ALIGNED(32, const ymm_reg,  ff_pw_1)    = { 0x0001000100010001ULL, 0x0001000100010001ULL,
>                                                      0x0001000100010001ULL, 0x0001000100010001ULL };
>  DECLARE_ALIGNED(32, const ymm_reg,  ff_pw_2)    = { 0x0002000200020002ULL, 0x0002000200020002ULL,
>                                                      0x0002000200020002ULL, 0x0002000200020002ULL };
>  DECLARE_ASM_ALIGNED(16, const xmm_reg,  ff_pw_3)    = { 0x0003000300030003ULL, 0x0003000300030003ULL };
> +av_mcmodel_small
>  DECLARE_ASM_ALIGNED(32, const ymm_reg,  ff_pw_4)    = { 0x0004000400040004ULL, 0x0004000400040004ULL,
>                                                      0x0004000400040004ULL, 0x0004000400040004ULL };
> +av_mcmodel_small
>  DECLARE_ASM_ALIGNED(16, const xmm_reg,  ff_pw_5)    = { 0x0005000500050005ULL, 0x0005000500050005ULL };
>  DECLARE_ALIGNED(16, const xmm_reg,  ff_pw_8)    = { 0x0008000800080008ULL, 0x0008000800080008ULL };
>  DECLARE_ASM_ALIGNED(16, const xmm_reg,  ff_pw_9)    = { 0x0009000900090009ULL, 0x0009000900090009ULL };
> @@ -49,6 +53,7 @@ DECLARE_ALIGNED(32, const ymm_reg,  ff_pw_256)  = { 0x0100010001000100ULL, 0x010
>  DECLARE_ALIGNED(32, const ymm_reg,  ff_pw_512)  = { 0x0200020002000200ULL, 0x0200020002000200ULL,
>                                                      0x0200020002000200ULL, 0x0200020002000200ULL };
>  DECLARE_ALIGNED(16, const xmm_reg,  ff_pw_1019) = { 0x03FB03FB03FB03FBULL, 0x03FB03FB03FB03FBULL };
> +av_mcmodel_small
>  DECLARE_ALIGNED(32, const ymm_reg,  ff_pw_1023) = { 0x03ff03ff03ff03ffULL, 0x03ff03ff03ff03ffULL,
>                                                      0x03ff03ff03ff03ffULL, 0x03ff03ff03ff03ffULL};
>  DECLARE_ALIGNED(32, const ymm_reg,  ff_pw_1024) = { 0x0400040004000400ULL, 0x0400040004000400ULL,
> @@ -66,13 +71,16 @@ DECLARE_ALIGNED(32, const ymm_reg,  ff_pw_m1)   = { 0xFFFFFFFFFFFFFFFFULL, 0xFFF
>  
>  DECLARE_ALIGNED(32, const ymm_reg,  ff_pb_0)    = { 0x0000000000000000ULL, 0x0000000000000000ULL,
>                                                      0x0000000000000000ULL, 0x0000000000000000ULL };
> +av_mcmodel_small
>  DECLARE_ALIGNED(32, const ymm_reg,  ff_pb_1)    = { 0x0101010101010101ULL, 0x0101010101010101ULL,
>                                                      0x0101010101010101ULL, 0x0101010101010101ULL };
>  DECLARE_ALIGNED(32, const ymm_reg,  ff_pb_2)    = { 0x0202020202020202ULL, 0x0202020202020202ULL,
>                                                      0x0202020202020202ULL, 0x0202020202020202ULL };
> +av_mcmodel_small
>  DECLARE_ALIGNED(32, const ymm_reg,  ff_pb_3)    = { 0x0303030303030303ULL, 0x0303030303030303ULL,
>                                                      0x0303030303030303ULL, 0x0303030303030303ULL };
>  DECLARE_ALIGNED(32, const xmm_reg,  ff_pb_15)   = { 0x0F0F0F0F0F0F0F0FULL, 0x0F0F0F0F0F0F0F0FULL };
> +av_mcmodel_small
>  DECLARE_ALIGNED(32, const ymm_reg,  ff_pb_80)   = { 0x8080808080808080ULL, 0x8080808080808080ULL,
>                                                      0x8080808080808080ULL, 0x8080808080808080ULL };
>  DECLARE_ALIGNED(32, const ymm_reg,  ff_pb_FE)   = { 0xFEFEFEFEFEFEFEFEULL, 0xFEFEFEFEFEFEFEFEULL,
> diff --git a/libavutil/attributes.h b/libavutil/attributes.h
> index 04c615c952..704a7070db 100644
> --- a/libavutil/attributes.h
> +++ b/libavutil/attributes.h
> @@ -104,6 +104,12 @@
>  #    define attribute_deprecated
>  #endif
>  
> +#if defined(__clang__) && __has_attribute(model)
> +#    define av_mcmodel_small __attribute__((model("small")))
> +#else
> +#    define av_mcmodel_small
> +#endif

This should be in attributes_internal.h. Or maybe we should add new
macros in mem_internal.h for the case of variables with external linkage
and static storage duration (one macro for the const case, one for the
non-const case) that would automatically include your proposed attribute?

> +
>  /**
>   * Disable warnings about deprecated features
>   * This is useful for sections of code kept for backward compatibility and

_______________________________________________
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".