From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR02-VI1-obe.outbound.protection.outlook.com (mail-vi1eur02on2068.outbound.protection.outlook.com [40.107.241.68]) by sourceware.org (Postfix) with ESMTPS id C48033858D32 for ; Tue, 5 Sep 2023 07:51:17 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org C48033858D32 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=suse.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=G9u8zmIA0N3sa8KZnyKm3YekcjMvcajMZhUCEuoVHK7a0NLmAWG6mJKqioHhqbQnoUKyzBfiWv30E5Ez4XkPtOsvfHUWTplk/ap+FW4Iu0qPAcuggOKqIXd6KjndsE5nNMfncSpFdaW95pFl3uJv+sueUYFuNIOcM6Jl80Kt9/uL7FwvfNWJGoCMV4A1KW+s/0dKAYJASrQ+P9nfM2zyzsLz2MwbB2verru90q5EFerq83YvzsuBHNZycZj+qscy3Wxl9rLbsuNdinFQb5zsOv+BQqqs+1xpvg8qFQ5uKRZxguhufJJAmQD41b2gF///TXaaLz05uYyaU9Wml6iPkw== 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=3ZzsRbdUcFounU/MUrbkL7v8yWo1dkIl0a4gYJT2dpY=; b=SLd04m4B2xxPjqBEJlggK6CjFNrKdnUaRu3xam0a9Zewo/xTD9+cUAFGA5zbHdXXpk9xzdk5OmxmfkG7K8tr7AONHzeF+7sg5Jt6GPDHZj6PYHvyn1Z7pbW33YQgjQ4xoQ+z6mFIFQfn9EOwhn5cH8Xi7GVMuBEBTYGsu5yD7Ms4uAIqvbgue2G6lU4y2lpJaskVAP4wA4hhZ5aXJc3QQpKYg1LY3VR/DtFM/32pP7KhAMZbNBt9UApNw5pqCHEr9pWuhs6PcLReLPdJUH6jAAA6u4t1mFgZSWr9TOVYRzt6p/YeHBQ06bH1wrdarb2Fz5cpc+7sy9SjBBoiFI+RlA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=3ZzsRbdUcFounU/MUrbkL7v8yWo1dkIl0a4gYJT2dpY=; b=Y+P5EIJV/dWbXhfTQXo4w+PG3JX7NaUmmb06oLP592cnEQizonchy4FHDYDYZNOEc/Wd8aQiHpb1sc8qNgvYyEI20CSVrzdj58seRteYpdeCwAfnU0GgPLrtjSv/vu12+ljsLwMIAPLnDFjEX9g2AtDSuvvjiVw3tegzl+vWzb5qpEgMHf/KpCDOOFPRtPYI4gV0ZCgLQqUqjk/oU3+e6YquPwpOd5CokvTbGT0z6Tv5EtByk9P3wDtu3nTe5YfRK1ycj55/87NBnD1cVTNfIcIqh7JaT80b/xVf/oql2dQ6tVJp5MvPDic3SQQWE+iOeLL9jeXDQSUWNRDVUWvXHw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Received: from DU2PR04MB8790.eurprd04.prod.outlook.com (2603:10a6:10:2e1::23) by DB9PR04MB9356.eurprd04.prod.outlook.com (2603:10a6:10:36a::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6745.33; Tue, 5 Sep 2023 07:51:14 +0000 Received: from DU2PR04MB8790.eurprd04.prod.outlook.com ([fe80::f749:b27f:2187:6654]) by DU2PR04MB8790.eurprd04.prod.outlook.com ([fe80::f749:b27f:2187:6654%6]) with mapi id 15.20.6745.030; Tue, 5 Sep 2023 07:51:14 +0000 Message-ID: Date: Tue, 5 Sep 2023 09:51:11 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.15.0 Subject: [PATCH v2 1/3] x86: make AES/PCMULQDQ respectively prereqs of VAES/VPCMULQDQ Content-Language: en-US To: Binutils References: <598bfb0c-495b-0445-735f-2ddafc45643d@suse.com> Cc: "H.J. Lu" , "Jiang, Haochen" From: Jan Beulich In-Reply-To: <598bfb0c-495b-0445-735f-2ddafc45643d@suse.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: FR0P281CA0237.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:b2::9) To DU2PR04MB8790.eurprd04.prod.outlook.com (2603:10a6:10:2e1::23) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DU2PR04MB8790:EE_|DB9PR04MB9356:EE_ X-MS-Office365-Filtering-Correlation-Id: f2ef70f8-840a-4964-d6b8-08dbade4e0c5 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: kx/qcWpyllaXZMXgjLkx3vnjL9fv54Co65YfQ5iNQ4ZZlH2w3IQq8xrSuO2M0EnPqa2UaRH6LPbwuO6osoxkQ7nJGRys9NU6X00i7yUllTaAp2DX9yF7igZBCnhZzepDmXhdYPCI3DeGqUwOmaeKWFv076Zes7yFGPDyXLuFNSyMWrEPp4KyciG1rrptUxkQc6WqXzsTzOosr8DdL1sgwYg9j6uotJE1OFxbbb4ixkVYU3rBXJEfkVMxRgjtzwjxfHn2D7n9nt/+UHwySh4XuM3Lwqi6mq+j1Ct/il5BbGRPZgX604LfXynDhQiqX/mCR8oplzrKZdMEUAy4uAXV2MsXMnpeXYqx/Yg3BO5T2ry/2MCPqT4ODGeveJaAzgE6HVPBpwHP62awQVtHxDmhSJkJsTnV9f9SxZuo4oFelTFjeRVMYQHhBKQAUVgiF8SCKzUUo8AjOrpCWGhOIiUclHVkb+5mQ+aLkGiMiLw9FkQG0kZ1W4XdQMGgSpG8htxhBy4hCw3/VN+dyQgLr8F1wagIsDA2Mv6wXt2ITwmeq9foKttoGzO6/4E2oNhsNSfrDYxvuXjN4MV7zLNjjrtPE/DZ5gintOq8YvdtLXmubUcvf3jFx7z550EvHYMEoDoCGIvPzmtgRe+q25RyI6f4VA== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR04MB8790.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(346002)(366004)(39860400002)(136003)(376002)(396003)(186009)(451199024)(1800799009)(31686004)(36756003)(26005)(6506007)(83380400001)(31696002)(41300700001)(86362001)(5660300002)(4326008)(8676002)(8936002)(6666004)(6486002)(2616005)(6512007)(478600001)(316002)(2906002)(38100700002)(66476007)(66556008)(54906003)(66946007)(6916009)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?anp4S3VVQzhwRWFyYkQ0blZvWG1HK0ZqaFo5Ym1JUUFGYWFlNGs2Nk16ZjRX?= =?utf-8?B?YXE0ZUUvZHg2MVNEQWpmK2c3eUFia1RoZExnYkRuNUMvWW1PQlY3dk43cE9x?= =?utf-8?B?OU1lbWFNdDZFY1dBYkphWk5xZW5WdGZCTU1NV1B2TDlyZTlVZ3JBa2xZaitK?= =?utf-8?B?WlBMV0JpSGxlOXBQdWpFSjNmYmRPL2luOENORmFhMU40clAzYXpKRHNwQXUz?= =?utf-8?B?YUZuaUdtWElqbmVnOUZwYmJNS1FqYm5UemlxR1dHUjEramkzaUV2a0hWc255?= =?utf-8?B?UnNEN2VSa3hwMTZ5ZXhHWHYrZkV4VnFLaERkRDhVODhxeWZPS1VqOG94d3pz?= =?utf-8?B?VTVtalhsM1d2NlkxU3BMN09QUWY1WXhFRUhEZzRDTzBubVZwdFBlMTlQU0tJ?= =?utf-8?B?cVh1M3NURm42YXkvY1V0WGtPZjVSMFNDOHE3b1lMMEVUemc4bGkrN2xtY2ox?= =?utf-8?B?NE5CTzYzd2UxaXB3eXdzOXAzNWI0ejVMRFRmMitLZ0plbEhQSlBYNVNhWGx2?= =?utf-8?B?Rmhkd2Z6S3U1VlNZN1Y4QmJMRlQrWDlac0E2YTBGTForUzRQaW9NNWprYTJl?= =?utf-8?B?REZlWWxIVm4rdlBUUDV4TVp0OFRZMG9xWTB2Q1R1WklEMW9ZUGl0aFNobW1Z?= =?utf-8?B?REFCYm1Rc3hCNEFkT2FDTWozcXpod2Q4cTczRTNxbks3V3EzNHFIdjFwSUZu?= =?utf-8?B?UzlIS1hhZUl0VktKa013QmZpY1NOUTZ4M2xseWoxWHNNSjZaS29jZmRkYTJ0?= =?utf-8?B?eGxKYnhWbjM4V0JJVWJERDRGUzBaMEFLcEJKUnc4R1JUR3NzdmdCV0dxOHQ3?= =?utf-8?B?WU1GZmM1VXcwN09xSlk4T3hGZmlRRlhENWFRWEhoc1lFNjVqWDMwMlErNkJC?= =?utf-8?B?Tk9nSnppanBnaThEdXI4OENzT3dMdjJUUFFkVjAvZ3piRDM5N1VJcElBbS9Y?= =?utf-8?B?RW1GMTM3eC9vSXBNVUx0M1pWQzErd0VTQ29IYVp0eCsvQ09TUFU3RmltMzlN?= =?utf-8?B?TVlscVZxdXVuYjhLdENWSkdCajlQeC90SkszSWdvc2tYbEFMS3I0dDdJb0ph?= =?utf-8?B?MS9vTFo5NFNIQUIwWFBIaFhZRklVdVdjeldaQUErS245TGZSRlBjS3BIQVFV?= =?utf-8?B?QXZPaVpHcVdpSFJucW0zYlg1YXRMV3FJODN1RTFXdCt1QktySlJ5eDljb3B2?= =?utf-8?B?S25vdm1GTVkvOVhYZVhJNTIwQWtGSDZiaDAwbllaeDBoMzlWNkpiZkdMTlo3?= =?utf-8?B?VDlLbjIyc0JsVm9LTW5hWW41NmxLRmJHZStUVExxNldpVS9tR0NpWHRqNDU2?= =?utf-8?B?czNDQnc5V044Nk5EZUMrVFlZSmtIYlFxSDEvbGl6WktNd1pKZnZuSHdTV3hF?= =?utf-8?B?dEJVNGxKV3hrUFJ6N3MwVHhING51NGszR0RodlVPMEw1TVQxaHVGZ1JVS0Jn?= =?utf-8?B?NTllbEwwS1NMekVlempKQ3R0MzFqdzRJWjBDRGdSRkJUbkFWVFAwUDFoUWlS?= =?utf-8?B?L2hPNzR3N3Z0eEhkOTA4dUpnbkdWeFJ5T2VZZWlDdDdpWmNibkY2dVdRZVQ0?= =?utf-8?B?bHhnUStDb0xUY1dhZVlqT1R1LzM2Y01rNWdmTWdydWY5ZTJ4VHV4b2tMbnJF?= =?utf-8?B?UGl2TWYvbGNhdE5hdlprMjJWbER1WjBVQUQrVytGajBRdWRQMW5Ma0RzTHlC?= =?utf-8?B?ZjQvdGJmWEZHL0kydGxXV0VLbzhGK2NmNlhUei9pQlZQTm02cythL0dLdUdt?= =?utf-8?B?MmxyWE0zSnRLRmhWZlpITVp4RmNoa3hUZFRIN3pEMTQ4U3VtbWNKbFVQTGFh?= =?utf-8?B?c3NnRUR1eEFCeThCTTNGc3orRE0rUVRYSDRQQytwb0hOUi8rNkh6YTAyb2FV?= =?utf-8?B?YmdjVUpCcFJPSEszbVNHUStBQSsyNnY5S0toSXV1NWlFSTZwLzJLK3NaZVE4?= =?utf-8?B?V0hRWGZmT0h0SkpYWkMvSjhIU096ODlyV2xGUEE2VzhxdkZCSE5sT2JOUlNa?= =?utf-8?B?dnRScWdYRm9PTk1wbVlqOUtwZ292YytSTWZ6MFloN2lrdUd5ZG84dkRDQ2dX?= =?utf-8?B?Uk9WVG40RGM2YzV1S29XQ1YvUTJRS3YrN2tqUHh0TkQ1djZuR1U2MUd0aExQ?= =?utf-8?Q?fXu0F1cX3lgkMTu+lGNYeaAsk?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: f2ef70f8-840a-4964-d6b8-08dbade4e0c5 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8790.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Sep 2023 07:51:14.0247 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Y6POImhJcYCrmE3bPPMVMEsiHQz71QLV+evs5XYSH2ZxFTy8KYJptj2jNnsNB9BNfZXk/hyBGE9mnIignKDc2Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR04MB9356 X-Spam-Status: No, score=-3027.0 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: These probably should have been put in place already anyway, but they're very much wanted in order to then put AVX10.1 support on top. Note that to avoid reverse dependencies towards SSE (just like we already do for AVX and XOP), add_isa_dependencies() needs some further tweaking. While there also address a related anomaly: Disabling AES but neither AVX nor VAES (similarly for {,V}PCLMULQDQ) would better keep the 128-bit VEX-encoded forms available. Note that for this the VAES insns are moved past the AVX+AES ones, to avoid the property-11 test suddenly failing. The test really is wrong, but let's not also make things inconsistent: Without the movement, YMM use would be correctly recorded for the 128-bit forms simply because the first template already matches, as long as VAES wasn't disabled. Yet it still wouldn't be if only AVX+AES were enabled. Nor would behavior here then be the same as for VPCLMUL* insns. --- v2: New. --- a/opcodes/i386-gen.c +++ b/opcodes/i386-gen.c @@ -229,9 +229,9 @@ static const dependency isa_dependencies { "GFNI", "SSE2" }, { "VAES", - "AVX2" }, + "AVX2|AES" }, { "VPCLMULQDQ", - "AVX2" }, + "AVX2|PCLMULQDQ" }, { "SEV_ES", "SVME" }, { "SNP", @@ -712,7 +712,8 @@ add_isa_dependencies (bitfield *flags, c unsigned int i; char *str = NULL; const char *isa = f; - bool is_isa = false, is_avx = false; + static bool is_avx; + bool is_isa = false, orig_is_avx = is_avx; /* Need to find base entry for references to auxiliary ones. */ if (strchr (f, ':')) @@ -732,7 +733,7 @@ add_isa_dependencies (bitfield *flags, c && reverse > Cpu686) isa_reverse_deps[i][reverse] = 1; is_isa = true; - if (i == CpuAVX || i == CpuXOP) + if (i == CpuAVX || i == CpuXOP || i == CpuVAES || i == CpuVPCLMULQDQ) is_avx = true; break; } @@ -740,7 +741,10 @@ add_isa_dependencies (bitfield *flags, c /* Do not turn off dependencies. */ if (is_isa && !value) - return; + { + is_avx = orig_is_avx; + return; + } for (i = 0; i < ARRAY_SIZE (isa_dependencies); ++i) if (strcasecmp (isa_dependencies[i].name, f) == 0) @@ -765,11 +769,14 @@ add_isa_dependencies (bitfield *flags, c if (reverse < ARRAY_SIZE (isa_reverse_deps[0])) isa_reverse_deps[reverse][reverse] = 1; + is_avx = orig_is_avx; return; } if (!is_isa) fail ("unknown bitfield: %s\n", f); + + is_avx = orig_is_avx; } static void --- a/opcodes/i386-opc.tbl +++ b/opcodes/i386-opc.tbl @@ -1441,13 +1441,6 @@ aesenclast, 0x660f38dd, AE aesimc, 0x660f38db, AES, Modrm||NoSuf, { RegXMM|Unspecified|BaseIndex, RegXMM } aeskeygenassist, 0x660f3adf, AES, Modrm||NoSuf, { Imm8, RegXMM|Unspecified|BaseIndex, RegXMM } -// VAES - -vaesdec, 0x66de, VAES, Modrm|Vex256|Space0F38|VexVVVV|VexWIG|NoSuf, { RegYMM|Unspecified|BaseIndex, RegYMM, RegYMM } -vaesdeclast, 0x66df, VAES, Modrm|Vex256|Space0F38|VexVVVV|VexWIG|NoSuf, { RegYMM|Unspecified|BaseIndex, RegYMM, RegYMM } -vaesenc, 0x66dc, VAES, Modrm|Vex256|Space0F38|VexVVVV|VexWIG|NoSuf, { RegYMM|Unspecified|BaseIndex, RegYMM, RegYMM } -vaesenclast, 0x66dd, VAES, Modrm|Vex256|Space0F38|VexVVVV|VexWIG|NoSuf, { RegYMM|Unspecified|BaseIndex, RegYMM, RegYMM } - // PCLMULQDQ @@ -2065,13 +2058,22 @@ vsm4rnds4, 0xf2da, SM4, Modrm|Space0F38| // SM4 instructions end. +// VAES + +vaesdec, 0x66de, VAES, Modrm|Vex|Space0F38|VexVVVV|VexWIG|CheckOperandSize|NoSuf, { RegXMM|RegYMM|Unspecified|BaseIndex, RegXMM|RegYMM, RegXMM|RegYMM } +vaesdeclast, 0x66df, VAES, Modrm|Vex|Space0F38|VexVVVV|VexWIG|CheckOperandSize|NoSuf, { RegXMM|RegYMM|Unspecified|BaseIndex, RegXMM|RegYMM, RegXMM|RegYMM } +vaesenc, 0x66dc, VAES, Modrm|Vex|Space0F38|VexVVVV|VexWIG|CheckOperandSize|NoSuf, { RegXMM|RegYMM|Unspecified|BaseIndex, RegXMM|RegYMM, RegXMM|RegYMM } +vaesenclast, 0x66dd, VAES, Modrm|Vex|Space0F38|VexVVVV|VexWIG|CheckOperandSize|NoSuf, { RegXMM|RegYMM|Unspecified|BaseIndex, RegXMM|RegYMM, RegXMM|RegYMM } + +// VAES instructions end + // VPCLMULQDQ instructions -vpclmulqdq, 0x6644, VPCLMULQDQ, Modrm|Vex256|Space0F3A|VexWIG|VexVVVV|NoSuf, { Imm8|Imm8S, Unspecified|BaseIndex|RegYMM, RegYMM, RegYMM } -vpclmullqlqdq, 0x6644/0x00, VPCLMULQDQ, Modrm|Vex256|Space0F3A|VexWIG|VexVVVV|NoSuf|ImmExt, { Unspecified|BaseIndex|RegYMM, RegYMM, RegYMM } -vpclmulhqlqdq, 0x6644/0x01, VPCLMULQDQ, Modrm|Vex256|Space0F3A|VexWIG|VexVVVV|NoSuf|ImmExt, { Unspecified|BaseIndex|RegYMM, RegYMM, RegYMM } -vpclmullqhqdq, 0x6644/0x10, VPCLMULQDQ, Modrm|Vex256|Space0F3A|VexWIG|VexVVVV|NoSuf|ImmExt, { Unspecified|BaseIndex|RegYMM, RegYMM, RegYMM } -vpclmulhqhqdq, 0x6644/0x11, VPCLMULQDQ, Modrm|Vex256|Space0F3A|VexWIG|VexVVVV|NoSuf|ImmExt, { Unspecified|BaseIndex|RegYMM, RegYMM, RegYMM } +vpclmulqdq, 0x6644, VPCLMULQDQ, Modrm|Vex|Space0F3A|VexWIG|VexVVVV|CheckOperandSize|NoSuf, { Imm8|Imm8S, Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM } +vpclmullqlqdq, 0x6644/0x00, VPCLMULQDQ, Modrm|Vex|Space0F3A|VexWIG|VexVVVV|CheckOperandSize|NoSuf|ImmExt, { Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM } +vpclmulhqlqdq, 0x6644/0x01, VPCLMULQDQ, Modrm|Vex|Space0F3A|VexWIG|VexVVVV|CheckOperandSize|NoSuf|ImmExt, { Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM } +vpclmullqhqdq, 0x6644/0x10, VPCLMULQDQ, Modrm|Vex|Space0F3A|VexWIG|VexVVVV|CheckOperandSize|NoSuf|ImmExt, { Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM } +vpclmulhqhqdq, 0x6644/0x11, VPCLMULQDQ, Modrm|Vex|Space0F3A|VexWIG|VexVVVV|CheckOperandSize|NoSuf|ImmExt, { Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM } // VPCLMULQDQ instructions end