Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rqF8S-00BLuS-2T for pgsql-hackers@arkaria.postgresql.org; Fri, 29 Mar 2024 16:31:20 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1rqF8Q-002v2b-Vw for pgsql-hackers@arkaria.postgresql.org; Fri, 29 Mar 2024 16:31:18 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rqF8Q-002v0l-4h for pgsql-hackers@lists.postgresql.org; Fri, 29 Mar 2024 16:31:18 +0000 Received: from mgamail.intel.com ([192.198.163.18]) by makus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rqF8L-0074xJ-9L for pgsql-hackers@lists.postgresql.org; Fri, 29 Mar 2024 16:31:16 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1711729874; x=1743265874; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=okvElx8zy7zg1slbQlZAaqDtmc3U2LC8Q74x2HjPCjI=; b=cPsW8q72+hwTT+BPBLbdJjRYR2ADSylMo1MqB4K8MW2SLrayfCvWxVsQ nhczgh5M3gNN5oomkLzs/64KJW5YIC6scx4SUFE+zbKwO2qobfCQx+ONl AV9aIRwDcMGUUf3m0YbUBFKv3CwfeNHkaryIERx8P6RggGmQ+o/6qRcCX kIN1BGvMZe/JiuxvtIlWGQiFe1Ru6sGey+D60W334pdLsC2g7cejeDrO0 sszuFYPM/SpgOhB+yOmEbykSvIUYEvpP2MUN1+WSmJuoXhoFtIbDFa1Ut OfjTaYDwYuXnPzlwNFRB6hF+8QwLu+eJcsiZKed1djVlgx+1DfuvJBJcY w==; X-CSE-ConnectionGUID: 546Rur5pQPGLmQ8t6J+RMw== X-CSE-MsgGUID: F4xeH2utQ2mNmThNST9ObQ== X-IronPort-AV: E=McAfee;i="6600,9927,11028"; a="6756921" X-IronPort-AV: E=Sophos;i="6.07,165,1708416000"; d="scan'208";a="6756921" Received: from fmviesa003.fm.intel.com ([10.60.135.143]) by fmvoesa112.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Mar 2024 09:31:13 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.07,165,1708416000"; d="scan'208";a="21541102" Received: from orsmsx602.amr.corp.intel.com ([10.22.229.15]) by fmviesa003.fm.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 29 Mar 2024 09:31:13 -0700 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX602.amr.corp.intel.com (10.22.229.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Fri, 29 Mar 2024 09:31:12 -0700 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by orsmsx610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35 via Frontend Transport; Fri, 29 Mar 2024 09:31:12 -0700 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (104.47.58.168) by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.35; Fri, 29 Mar 2024 09:31:12 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=eoTAv/JAECmoWWgsSmyBQ4POlFrNmtQgqH+JBr8BiwsKi0xRsABmUjYct6fVk1+DMUu9f6RGOIcISA8xrZSWqnoNcur6ALraH+BoF6Vpa8uk0yAHQBwDqJhtZ7xyuC4MAdPvtb5WduU5t9oK7Hh31iA1Kpz+N87P+mIHTGBHYlkpCtz2ZpGRoGox7tFN8bn7UzmB6Bhp3P188/iu16jht2DvjWCcnqKQnK+DOh2Ar8mcbwUzf9AeTHdAqfHb537KJOji5MlBcTXVZcxvhDRIr62Zii6CS7Of9d29mZtwUSmabLXz1BV34NK3oRlZ9uOvbI3uNXeFv6CWPVK82vAMqQ== 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=DeNk0R1sT+EaT7nlBBP4OM5BjVUQzWtsFX2nf3ta4a0=; b=lgmuNV2/63TJRCx8fM2uem92D+cnUd2c173cQF8ghhqg9epVNprotTpSjz+4I3Xf0VYKceTxyGMmTwPGihFaCdF0IuuyA3hVuOAh8HZ1io8x1T4grB1SME8v/5gD7NFRWUw5idAmskqyhBa8F4EeFFHrZCUeSXKZdhdeXZ4+y0xCN67chWJIv5UgWcSzm6yt9sV3m9Y/eI3o3ygx65KtKFJwmNXH0UVtYztkasqQS44dWjuf5WWUuhz56SHtswXxHlTKedj4clTj012yH5Gw88C+mWEfHljKM2q7K6byPTrYIltjekZx6f1+1JsPF+7dHUWEIk3E0sJJHeibEkGbUA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from PH0PR11MB5000.namprd11.prod.outlook.com (2603:10b6:510:41::19) by IA0PR11MB8377.namprd11.prod.outlook.com (2603:10b6:208:487::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.32; Fri, 29 Mar 2024 16:31:09 +0000 Received: from PH0PR11MB5000.namprd11.prod.outlook.com ([fe80::d2fc:19c6:4c35:1f34]) by PH0PR11MB5000.namprd11.prod.outlook.com ([fe80::d2fc:19c6:4c35:1f34%4]) with mapi id 15.20.7409.031; Fri, 29 Mar 2024 16:31:09 +0000 From: "Shankaran, Akash" To: Nathan Bossart , "Amonson, Paul D" CC: Tom Lane , David Rowley , "Andres Freund" , Alvaro Herrera , "Noah Misch" , Matthias van de Meent , "pgsql-hackers@lists.postgresql.org" Subject: RE: Popcount optimization using AVX512 Thread-Topic: Popcount optimization using AVX512 Thread-Index: AdoNliAXaie8RHrzTICrAiLVKKiYCgAsQKyAALaJTAAAAQ7nAAAAxSWAAAGNHgAAA/mZgAAeFdGAAZKQbBAAAw6egA3NuLcAAAvVM4ACbQuxsAAhlXkAAHPWMbAAAkOrAACYCUjgAAMc3wABvefW4AD8TV6wADf+AoAAmWkVgACOpocAAAl+RwAAJXNxYAAA1VoAAABadxAAZi2hAAAIeekAAMiJepAACPYvAAAbpMKQAJeTLYAAcNGUAAAm2oYAAAFGgCAAAIPdAAACb8MAAAdpgwAAADR0AAAAsQcAAAAMEoAAAWCPgAAC3eIAACrnWQAABeBEkAA1zxYAACb9mpAAwL24cAAATJYAAAAxGQAABx2FwAAC9E+AAGiTRwAAASAwAAAwbEYAAADYEgAAJL9AgAABFXaAAABdIgAAAC9GEA== Date: Fri, 29 Mar 2024 16:31:09 +0000 Message-ID: References: <2490633.1711379522@sss.pgh.pa.us> <20240325200551.GB2924132@nathanxps13> <20240327220010.GA231058@nathanxps13> <20240328213854.GA916732@nathanxps13> <20240329153515.GA1046039@nathanxps13> <20240329161642.GA1106154@nathanxps13> In-Reply-To: <20240329161642.GA1106154@nathanxps13> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PH0PR11MB5000:EE_|IA0PR11MB8377:EE_ x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: CYV7+aFBR+IoHxoi6YOFmKs1QGOrPJxvMaNkOC+WWAvBts5gbtRrsBH7OXjHNap1HYDYargaQOFp0/h5PL35n7ih1Rkwij7nEy8PW1kUy1Dcdu56k6WuUnddML6teLrTNyP+L04EcRu2+Dy26uKiBf6PIRqE08m7tQvi1syrhuSttUNcpTEPwDIzOo5no7u7nfioGPB+8vfMFmg/MgDORRp5GakAqUnvDRRpsN+MQbLJVc1WNrLz9nSlZmlC1mwXBW6GxGrxIZwoAfe3xBk5TFwA3ZfMs3g6C9t7MPhU2VeVEIaY9qhd7SRMzbMeO2fjFVlSnkszZGxf9HbnCdrwskDZpyPvP9H8hYqlikM+nnpcrV5Db7uFM90gUJCDqlzUla4Uvf1elAZLebwy0u/7t4LcRDCctDZ1OXyp1RnK0usuB7bbWjsGCV6XYlIVz8IpaXABcgYrBtfxFISyE0xjkLm7AXPoxAL4polSEjWTX8o7UZFaaJgasI+GhiiftcvN4UEZ+OtUa3nsDyOhPfKGil9kd6fbjjOpjwisNXQtXgbV3QQErr1Z8X263f2o20kaQQ+6c/ltlUACx4DZRk91lCqCzA6NS+wfZbKSAqs++arbBRfbHlpE0V5bveMVlDrt x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH0PR11MB5000.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(1800799015)(376005)(366007);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?Kjx88rWLIohAToTnlwL5HlHQSXxTTR6PqeJ2lf167bNeI0Pih9+zMuA05k20?= =?us-ascii?Q?BByY0PiJ/XxlxasSn7/8hdbHRbOfEbIfuVNuq6Ix2lelqkHX+MiWhFV5ChPL?= =?us-ascii?Q?aLH8gyoafge8cDWaDt6xY/+sNeQN1tQCwNtBMGahjVl22ijnWA6zS5CjThv9?= =?us-ascii?Q?Tv/i4bQnQjpltSEniI+0bTCZmQ2J3OxB8xdD0qu1LLnZ6xZwrSdnzZmckv1S?= =?us-ascii?Q?PsnIwi1PbJmj+VFi9kE7gVKXxu3JDAGG/oyiqFM8F6s7SV7b9DCejcQs+KIv?= =?us-ascii?Q?MU8N5GpjEr/z6YNYJGuyf5mZ7crNNE5txLGNNfhfic4kfRiy0LDX0BKEtS6L?= =?us-ascii?Q?IKv0+LBOhRRtNuhUMDVTebadZKiOIo5EIm/VAnnB9MaN/Mc7aLRsAygqQ7dt?= =?us-ascii?Q?DL3xMhmx9Vm4Cf2LHNJPNuOSp1O4X0cx+wFsuFov+T+WgLJhadlun7B3tk2d?= =?us-ascii?Q?bNGhN7ATQhRKfPmEcAPIf3DXC3z4hI1bMcT8ulbRf1VLkCwoWjJoqufp4xxb?= =?us-ascii?Q?oC4Kg4N2mIR729ckcHmjo1as5KcXN9nRUvxD6yZ4LsM0iSyO1+x7Pewvul0X?= =?us-ascii?Q?3MIt+mnYjU3uKrIrRi1Z2ah+xNObeBqe4aX/ljGVO+1IuRFYrOnoDRZrqhsx?= =?us-ascii?Q?6SxSLltY6P1Z7GNfVO4kLCgCRlmLuHcqQfV0E43/maLTS4axUbLlQzkRHBVS?= =?us-ascii?Q?i9699xytu4T6gifFUceY3KDdR+ZyKt+L/ix7spW1EvuIWfp5+utiRU5FOsIi?= =?us-ascii?Q?zPfwAYwgGqA7s7rl9/oBrAM2EB/gV7xj3WxZODr5lHzlMV05YDP1hpLu+EAm?= =?us-ascii?Q?mp3ikvvgJHC4k9+FW8ahBWj3XbFOgQO7f4Vvj5aKm7rZPPzxge+B8Um2dFtI?= =?us-ascii?Q?v3BHLgY7jSRfjgXRVE4xnz9RpwRTO0HbIhTZSklPWFJ5Eikp+mrurhAnpzsZ?= =?us-ascii?Q?TeWzxvmTx1WxRTUrxnVTrmo8ktWmnjqzyhQCJK71p69h1Q5fvJzzaDYUb/3d?= =?us-ascii?Q?7JfZahT53CofDI9IxbF5j8rEp8SgjpgtcsqFYPgFFpc6aYTVXfEsL5hvVMdq?= =?us-ascii?Q?+u5Hc5PvhvGeAwfis2UnhJQGqZuQcQc20y19TfW6KBNFaO36Dtj8GO2SMb1X?= =?us-ascii?Q?gwu5KYVTGN46gsC1MxqaFFbzZ//bAkS1WXhNCoJrCzyATW/Pd28JjPrdcbt/?= =?us-ascii?Q?2Pow1elH0vQrPg7Tl8FrafaI6xH2XlFi+sC8h/DScmFSSvDmqddA7NPtoue4?= =?us-ascii?Q?ytTitK5U4TRp+RCzGD8LpVos8su0MxYJPdvB6jTPQEMWbQ+/40viJWd4s8Bt?= =?us-ascii?Q?vsBGRRwCu35u87bFowTEs1GQcbl17vkgoAo7TSHA9v9XeWbuXFZncbnY6+e5?= =?us-ascii?Q?Lcm5rcukKYC53i37PAFpSC8rlDdizJYBlmJfppfA1PdpcpTztDfjbh20QPe+?= =?us-ascii?Q?MjRd8zKI136SwDGITAujVv4mDPkUpWCErOre6O1wk+yvax71R9ydTNSdv4hZ?= =?us-ascii?Q?GF1ofP5OEpqFJzt/ymzaZutQM25cwEaUXjO8ILyTFUty2qNUDGhhOxGrpU5c?= =?us-ascii?Q?aZ0noIxx/2h76l8L6KcFsG17Ob16uEdG95WkGVmD?= Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH0PR11MB5000.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: fda9a691-2e36-4d0c-a6ca-08dc500da3b2 X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Mar 2024 16:31:09.0576 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: NpX3VPRxzlTECe2We7zr3McT0IGP0YbuFv42O+CJQ1W6wfDGYHTnAR/KJgV0dJyNaoRlCQxueGJJSqS5snyC+7GxbAZPLjzphM0mtXMoByo= X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PR11MB8377 X-OriginatorOrg: intel.com List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk > From: Nathan Bossart =20 > Sent: Friday, March 29, 2024 9:17 AM > To: Amonson, Paul D > On Fri, Mar 29, 2024 at 04:06:17PM +0000, Amonson, Paul D wrote: >> Yeah, I understand that much, but I want to know how portable the=20 >> XGETBV instruction is. Unless I can assume that all x86_64 systems=20 >> and compilers support that instruction, we might need an additional=20 >> configure check and/or CPUID check. It looks like MSVC has had=20 >> support for the _xgetbv intrinsic for quite a while, but I'm still resea= rching the other cases. >=20 > I see google web references to the xgetbv instruction as far back as=20 > 2009 for Intel 64 bit HW and 2010 for AMD 64bit HW, maybe you could=20 > test for > _xgetbv() MSVC built-in. How far back do you need to go? > Hm. It seems unlikely that a compiler would understand AVX512 intrinsics= and not XGETBV then. I guess the other question is whether CPUID indicati= ng AVX512 is enabled implies the availability of XGETBV on the CPU. > If that's not safe, we might need to add another CPUID test. > It would probably be easy enough to add a couple of tests for this, but i= f we don't have reason to believe there's any practical case to do so, I do= n't know why we would. I'm curious what others think about this. This seems unlikely. Machines supporting XGETBV would support AVX512 intrin= sics. Xgetbv instruction seems to be part of xsave feature set as per intel= developer manual [2]. XGETBV/XSAVE came first, and seems to be available i= n all x86 systems available since 2011, since Intel SandyBridge architectur= e and AMD the Opteron Gen4 [0]. AVX512 first came into a product in 2016 [1] [0]: https://kb.vmware.com/s/article/1005764 [1]: https://en.wikipedia.org/wiki/AVX-512 [2]: https://cdrdv2-public.intel.com/774475/252046-sdm-change-document.pdf - Akash Shankaran