From nobody Mon Feb 9 13:41:22 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=suse.com); dmarc=pass(p=quarantine dis=none) header.from=suse.com ARC-Seal: i=2; a=rsa-sha256; t=1691421645; cv=pass; d=zohomail.com; s=zohoarc; b=Py/RvF1cp+iLwNzWIHl06959igSvCVSHYTwHdLiHtQCgfaDZervpn/TtdTg7047pJciw2w005ziHy2iybyTu8Arsoi1/o5Cyk9B3SqCo752rb1H44Lt74MsRjRGMmES+tkZqpxPirJ1MMuBXiCg6wQByAI1nvBgeCNfrLI1lzQA= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1691421645; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=UGOOHP5krYVxVKN7ninHexZbAZk3q9DOBXGn5X6bujs=; b=mq+TfprL9v0X4+Tb+jfHwBZco/w1Zov3P4cVL+IjNmpkpr2IQg30GbZNtqO6MSOShz/mMn+hEBcrpaC1fwNgAu/TseusPmoiODzv5NZEWhAdzd4vSI8zohyxL+j9PWzuQ8PwW7j9qajTgI4cx7fDCXomVXZxwRkBpT8O1RRIAok= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=suse.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1691421645125290.99374890079844; Mon, 7 Aug 2023 08:20:45 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.578626.906216 (Exim 4.92) (envelope-from ) id 1qT21p-0002UY-OW; Mon, 07 Aug 2023 15:20:17 +0000 Received: by outflank-mailman (output) from mailman id 578626.906216; Mon, 07 Aug 2023 15:20:17 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1qT21p-0002UR-Lw; Mon, 07 Aug 2023 15:20:17 +0000 Received: by outflank-mailman (input) for mailman id 578626; Mon, 07 Aug 2023 15:20:16 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1qT21o-0002UE-Fw for xen-devel@lists.xenproject.org; Mon, 07 Aug 2023 15:20:16 +0000 Received: from EUR03-DBA-obe.outbound.protection.outlook.com (mail-dbaeur03on2060b.outbound.protection.outlook.com [2a01:111:f400:fe1a::60b]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id e8e0f949-3535-11ee-b280-6b7b168915f2; Mon, 07 Aug 2023 17:20:15 +0200 (CEST) Received: from DU2PR04MB8790.eurprd04.prod.outlook.com (2603:10a6:10:2e1::23) by PA4PR04MB8014.eurprd04.prod.outlook.com (2603:10a6:102:c7::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6652.25; Mon, 7 Aug 2023 15:20:13 +0000 Received: from DU2PR04MB8790.eurprd04.prod.outlook.com ([fe80::e5cf:5743:ab60:b14e]) by DU2PR04MB8790.eurprd04.prod.outlook.com ([fe80::e5cf:5743:ab60:b14e%5]) with mapi id 15.20.6652.025; Mon, 7 Aug 2023 15:20:13 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: e8e0f949-3535-11ee-b280-6b7b168915f2 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WbnsvD/Boyqoq3MKW0QMEt93/cA1fWpa0V7Yua6sC+6fH7k47ArL9aedLuKqZoR7IlhXooSbuXaOXAET+OF7NgLRRaDfsKJ4m+ys7Y3/JbtgxcemzMYLQ6cUXnwt108C+/4Ajg+9N37p5EJJ7bhAbkWQItS+3g50169w12Q+doaqBY/vKkGEkDQitKn832z0ZZ8CMoQyOBpKqdJoHr4COOB/crGvbQREgWCaur7kPWdTzOKlA0231dGIfJ4Mc9mzuo6sVrqJg+eeHPAPtCfJCNBY9aFDm/ixHHK81f7SKmqZ8Ra9ej8Lf/VkBAuYI1w6xCqyLVcRDvlIUZBfLLYHQg== 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=UGOOHP5krYVxVKN7ninHexZbAZk3q9DOBXGn5X6bujs=; b=Z3FE96vOcih05YuoHjKx+y0t4yQ2/X5Zehn6DrRHwOB3eD/tQvdJIGEC8GExlHy2gYOF6I/d8HutLN73Z4tGR1pw0MfiLCUErfg5nnMJBIQPsWY0kWNM0itBB1gHsZsQBUMTsxSqUq6JCBlVp9bJh5uxXcVnl9zIo3Gfk8yV83Uw7iTLINriMWotmtL15+wkkDyfiAtjIWhZ7+afEG5uL0Ek36yjCrD51JjygTMRXYDaSkJIOGINbW7wqQq8Usg2uxVxh63CDUMtdU3HAq6mt8WosrmsoQoLtoDNHWHz4+0Zqh7/l3L7rQVGj2Pq576yMDcRVkqvSFsNq6FJ5aRdiA== 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=UGOOHP5krYVxVKN7ninHexZbAZk3q9DOBXGn5X6bujs=; b=CrIPPxf06n2QGBdKIzCS7nZ6CTcnaaD73TZrNi06NRlNKA8k79uOq/+cG0S+PekIi5BhQU0V2UiDY9KPDm0nlZMVlpdbkqF0u4pjl1ZMuKdPKBmbwELV1epeWvzmJUt1pFeZY+BbCpj8moNXoeu/zYWSMuYRAmN9iVguurqP7Spg37LD62WMIos5W5K1+SvVUEIRam8Ud+n5tIy2S9EdbUPn9Del/UqdIq8pzcLdMuUa94xGoubOJ7XUJ63HGoqUF+v+pgq5VF4CXe9dX1iB74J8nJMGbOSy9gH4IgJTCZbz3cOWIfo65UOvsSkn0hFdNDjy839UBW6psF7s825qXw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Message-ID: Date: Mon, 7 Aug 2023 17:20:11 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.14.0 Subject: [PATCH 1/4] x86emul: support AVX-VNNI-INT16 Content-Language: en-US From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Andrew Cooper , Wei Liu , =?UTF-8?Q?Roger_Pau_Monn=c3=a9?= References: <96f70f2f-8712-9f93-34e3-f56deae364a8@suse.com> In-Reply-To: <96f70f2f-8712-9f93-34e3-f56deae364a8@suse.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: FR2P281CA0069.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:9a::10) To DU2PR04MB8790.eurprd04.prod.outlook.com (2603:10a6:10:2e1::23) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DU2PR04MB8790:EE_|PA4PR04MB8014:EE_ X-MS-Office365-Filtering-Correlation-Id: 723d360b-97c5-4a33-54a2-08db9759cbeb X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: bOE5R/VJNuZWazyd+j6sn0HG6R4WeOlm3Lh5LuGo1FLSaKgU+1l66I40dXVSlznKbdw4/+SCRvjuwpKlFLBQfCcTqeaSfyDzZ8kHbiurYn0dNzNpV8Yd0MN9e48YT6x6pUfI4KtOkmQeUbFvuMpuGqaFPsj8CNKxwiaVQIqCJjB3RDyFqmw/5keVt4ZCXajeiCz1esl/Ob3T3gPnEd6JLHdLXveDgUa5hXGdwjglVs1DCtZiJRla4hLHGUekAXJZLAFjwttYloZqhQ9AhwTX8wG3o66g6FR4TTrMKgyjPEjZyppgIkRaBNs9T1I8Q9M0fztQR/izl2faIgrpgvvYzKPJF/zgppxvCytqDBwUFXOPucz4/3qZwBWtzigAR1nmVXAHHcobJB79LrEwmpF1Ylekr0lJ/o2hq6AKIRmrUF5LoRpc4dwuA7nX1p8hUdynzPTak4POxjbbKkpTgUI7OOBSIeEEmzEI6VyEEYCfWJTUsD4l/DLP+wtUiDm9+oXUDgeVvPL/FSw0m39wi6gxwTY7wKCmvDJYvA0G0X0vrvY3TLQJHrDJoKOHTEMBozQbH2kmrDlWtSJuT6CZCVas6amSpZ9pzCuLSPP5YG09vnQvCq02mYJVJVVrZAuQBxdSUxwG5xrI5x0Kt8SoeqKqyA== 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:(13230028)(396003)(376002)(136003)(39860400002)(366004)(346002)(451199021)(186006)(1800799003)(86362001)(31696002)(41300700001)(478600001)(6506007)(8936002)(8676002)(26005)(38100700002)(6486002)(2616005)(5660300002)(36756003)(2906002)(83380400001)(54906003)(31686004)(316002)(66476007)(66556008)(66946007)(6916009)(4326008)(6512007)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?aW1DUTVSTjBGeDdVMTVtaU9GMVo4VFhRbVAzNExyWmM4VlBydXZ4VEJvcldK?= =?utf-8?B?YlRBQ2VqZzdCWlkvYlFjRGlxTCt2cWxXOXI5K2VqVXk3ZWhLTWRjRVFhU1Rk?= =?utf-8?B?eUJBT29rbS9QdU9mKzhvTG5GVHRocUlXVVNKR0FpS09WaWJQZzl2ZVJWQUtB?= =?utf-8?B?aEtKVDlWVWVMVERlalhxb3pORlZaRUlDdEtyNG9mcXZydTJ6NmhQTzJzYzdh?= =?utf-8?B?WTVwMUtmdXRuL1dseld0bjd1QUE4SUtLU1A0SFlYbXo2dUhnRjV5aC8rT3h5?= =?utf-8?B?MFZXajE4emVQYld5bjc1RjBKZzNvektBK2tyWlVMV0xDaWRFUSs4ZERrNktq?= =?utf-8?B?NFJUcGRETUJ6ZTA5NVFNVk1EMzkvSUZKL3dCRWZwSW9FTzh2NGpMSmE1ZDhz?= =?utf-8?B?NnovS2JVQURscnhua3EyVm52SkRjenRPRDZSSkhJVGJ6MW9TN09laTZ3UzNI?= =?utf-8?B?d2VTbncxRWtmY2d2aVF5eWtMVVhYQzkxZU4xWDZuUm1yYnIzaHpDYTVndnJm?= =?utf-8?B?eWtEL2kyTTl2VXN2QnIzOFNVRUxpSW5GRk5FbFNEOXp3Qm5nK3RVMTlZRHpR?= =?utf-8?B?cEtpRVpLNlNEUUlUNGk4d29vVFRYRlI2UmZ3T3VvNkpUbUh1U2E4YVVHM1JE?= =?utf-8?B?R1k1REx6VzBtM3FnbFFYaXY1b21yaFpGemg2bFUrb01KNGxPdnJmSDlYbDB6?= =?utf-8?B?MDA3WkRpTzZ2OVdkNGRRSlVIS3k4ZG1KWjUwNm1DaXlBZDVEZ3h3NDIzd0xs?= =?utf-8?B?cmZ2V1pZVHFDMmpPK1hhMnVVQkJVaHg1Z1pJUnV6T0pYWHVzc0hYemlNY3Zq?= =?utf-8?B?K0NWZ1NuTHN5ckhQY09lZlROQ0tYMDBxR0RoQWhwaTJUbnp6RnVmalNOVnli?= =?utf-8?B?WjVuUm54WHRiR0N6VTh6UTRVNDU3d0FibkRQTXdtWGc0SHdweVZ4ZWxxREJw?= =?utf-8?B?RmpwZ1VoY1VhRWRHbTRNRTRLUmhmdUJxNE4zVUM0eno0VkxjdzcvQkQxTzFi?= =?utf-8?B?ZXRhNVcwMjhreWwzR2Qya1YrOUNyUk5mSXNMSUp1WS9YenEzdmpxT2U5ZGRh?= =?utf-8?B?b04zTG5rLzBJVFdHZC9tRUI1WVpYNFdQZ0pKN0kyeVlPNnNGTU5oNGNNaUQz?= =?utf-8?B?a25tZXRJU2NoRkViTnVQZDdTRE51K1NnOHk5cXhGUEYrbFJnU2c5RTU3TUZk?= =?utf-8?B?VUQ3VWFGaUpwR2d4M3Y0MHo2QWtGNXhWWEp6T0cxbk41eVNuOUlNY0t3Y0ZY?= =?utf-8?B?WEpTZko0NFRCK25ibmhOVXhhMU5Mb2VPa2w1ZEVzelc5ODBPTVNHVXVwZjEx?= =?utf-8?B?eTA3OGpveEtMNC9YU3VHQXIzUXRzbWZ3N0FtMDloc3lZNURhaEhQbzVKbUlQ?= =?utf-8?B?NVdxZUp1RklNc3ZxWnI3elZEVXZKdFVJZEdESHVBcVZxL25VeG50SjN0WFN3?= =?utf-8?B?WE5aYXFVbEdBZ3VJNVlJdGtpc1ZsODdWbXdzREY5YXFVOWJVSXlLMzZ6TTY4?= =?utf-8?B?NWNnYnNCSWZtVTM5YVdESXM4ZXU4Q1FrWTh0emFPSHg2Zkw0V0E2NkJNZWZa?= =?utf-8?B?ekFoR00ydXk2WjBIck03ODBrQXN1K0RXcVUrS0I3UDRmQmQ3T1h2REZ0Y3VR?= =?utf-8?B?bFd4TWhyNkx1L0dBUkRvck1UamwvUDhlRHoxdWhFU1FFVUNHNmZ0ckpsOWRN?= =?utf-8?B?Uzk3Q3pEMWxmdlBsYitURkZyd3hreGNmNXhZQlpQSUFuV0YxbThMOTc5UlRB?= =?utf-8?B?Um1HcXdHcFJSTVhaZ0lrRUs5NmZXcUdiQWxSSUc3Y01WOGhBVHFkK2hzSWxC?= =?utf-8?B?MTl2d0xYb0pwem9tdDJRWll0WS9LVGM0UkI5L0FWR1lwRkVqdkFMWU1rcWt1?= =?utf-8?B?K2pJeTdMWUNRcGRKb0kwcVBSOVAzU3RUY0NCUG8ybEtWWmJXZ2QrejVmZTNt?= =?utf-8?B?V3gzbHdydmVPQ1BIc0d6OGluWDE1OHR1YUZsbDh3d2pNY3ZJRTFPTzBGdjdX?= =?utf-8?B?OGhFU2d0eXlkY2laWmVTc1lyb2dNSG00dzFHb1NWM29GbExLOWYybk94TTRt?= =?utf-8?B?SFhBTlpqZkVLQmJkS0o2ZWdDOWFadVhZeTJyNUt6Nk9nN3BnUWFsU0RUTWc2?= =?utf-8?Q?/DQZ63eeJxm3Ihg86ide34ya0?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 723d360b-97c5-4a33-54a2-08db9759cbeb X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8790.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Aug 2023 15:20:13.3647 (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: Wh4BoECcbDA9mF4aSPXGL+oKUYqP/eeEv4cAGIBdpGIhc0AD+MemHwXmC18ZwKN6R4Bw1z1dykNigylhtxpPvQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR04MB8014 X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1691421645793100001 Content-Type: text/plain; charset="utf-8" These are close relatives of the AVX-VNNI and AVX-VNNI-INT8 ISA extensions. Since the insns here and in particular their memory access patterns follow the usual scheme (and especially the word variants of AVX-VNNI), I didn't think it was necessary to add a contrived test specifically for them. Signed-off-by: Jan Beulich Reviewed-by: Andrew Cooper --- I'm actually pondering whether to contrive dot_product() for these and the other AVX-VNNI* insns, by additionally performing a horizontal add on the result vectors. Main thing I dislike about it is that everything else in simd_test() would then be re-run for no real purpose. Yet making a new standalone simd-dotp.c also doesn't look very attractive. --- SDE: -arl, -lnl, or -future --- a/tools/misc/xen-cpuid.c +++ b/tools/misc/xen-cpuid.c @@ -217,6 +217,8 @@ static const char *const str_7d1[32] =3D { [ 4] =3D "avx-vnni-int8", [ 5] =3D "avx-ne-convert", =20 + [10] =3D "avx-vnni-int16", + [18] =3D "cet-sss", }; =20 --- a/tools/tests/x86_emulator/predicates.c +++ b/tools/tests/x86_emulator/predicates.c @@ -1397,6 +1397,12 @@ static const struct vex { { { 0xbe }, 2, T, R, pfx_66, Wn, Ln }, /* vnmsub231p{s,d} */ { { 0xbf }, 2, T, R, pfx_66, Wn, LIG }, /* vnmsub231s{s,d} */ { { 0xcf }, 2, T, R, pfx_66, W0, Ln }, /* vgf2p8mulb */ + { { 0xd2 }, 2, T, R, pfx_no, W0, Ln }, /* vpdpwuud */ + { { 0xd2 }, 2, T, R, pfx_66, W0, Ln }, /* vpdpwusd */ + { { 0xd2 }, 2, T, R, pfx_f3, W0, Ln }, /* vpdpwsud */ + { { 0xd3 }, 2, T, R, pfx_no, W0, Ln }, /* vpdpwuuds */ + { { 0xd3 }, 2, T, R, pfx_66, W0, Ln }, /* vpdpwusds */ + { { 0xd3 }, 2, T, R, pfx_f3, W0, Ln }, /* vpdpwsuds */ { { 0xdb }, 2, T, R, pfx_66, WIG, L0 }, /* vaesimc */ { { 0xdc }, 2, T, R, pfx_66, WIG, Ln }, /* vaesenc */ { { 0xdd }, 2, T, R, pfx_66, WIG, Ln }, /* vaesenclast */ --- a/tools/tests/x86_emulator/x86-emulate.h +++ b/tools/tests/x86_emulator/x86-emulate.h @@ -183,6 +183,7 @@ void wrpkru(unsigned int val); #define cpu_has_avx_ifma (cp.feat.avx_ifma && xcr0_mask(6)) #define cpu_has_avx_vnni_int8 (cp.feat.avx_vnni_int8 && xcr0_mask(6)) #define cpu_has_avx_ne_convert (cp.feat.avx_ne_convert && xcr0_mask(6)) +#define cpu_has_avx_vnni_int16 (cp.feat.avx_vnni_int16 && xcr0_mask(6)) =20 #define cpu_has_xgetbv1 (cpu_has_xsave && cp.xstate.xgetbv1) =20 --- a/xen/arch/x86/include/asm/cpufeature.h +++ b/xen/arch/x86/include/asm/cpufeature.h @@ -183,6 +183,7 @@ static inline bool boot_cpu_has(unsigned /* CPUID level 0x00000007:1.edx */ #define cpu_has_avx_vnni_int8 boot_cpu_has(X86_FEATURE_AVX_VNNI_INT8) #define cpu_has_avx_ne_convert boot_cpu_has(X86_FEATURE_AVX_NE_CONVERT) +#define cpu_has_avx_vnni_int16 boot_cpu_has(X86_FEATURE_AVX_VNNI_INT16) =20 /* MSR_ARCH_CAPS */ #define cpu_has_rdcl_no boot_cpu_has(X86_FEATURE_RDCL_NO) --- a/xen/arch/x86/x86_emulate/decode.c +++ b/xen/arch/x86/x86_emulate/decode.c @@ -435,6 +435,8 @@ static const struct ext0f38_table { [0xcc] =3D { .simd_size =3D simd_packed_fp, .two_op =3D 1, .d8s =3D d8= s_vl }, [0xcd] =3D { .simd_size =3D simd_scalar_vexw, .d8s =3D d8s_dq }, [0xcf] =3D { .simd_size =3D simd_packed_int, .d8s =3D d8s_vl }, + [0xd2] =3D { .simd_size =3D simd_other }, + [0xd3] =3D { .simd_size =3D simd_other }, [0xd6] =3D { .simd_size =3D simd_other, .d8s =3D d8s_vl }, [0xd7] =3D { .simd_size =3D simd_scalar_vexw, .d8s =3D d8s_dq }, [0xdb] =3D { .simd_size =3D simd_packed_int, .two_op =3D 1 }, --- a/xen/arch/x86/x86_emulate/private.h +++ b/xen/arch/x86/x86_emulate/private.h @@ -593,6 +593,7 @@ amd_like(const struct x86_emulate_ctxt * #define vcpu_has_avx_ifma() (ctxt->cpuid->feat.avx_ifma) #define vcpu_has_avx_vnni_int8() (ctxt->cpuid->feat.avx_vnni_int8) #define vcpu_has_avx_ne_convert() (ctxt->cpuid->feat.avx_ne_convert) +#define vcpu_has_avx_vnni_int16() (ctxt->cpuid->feat.avx_vnni_int16) =20 #define vcpu_must_have(feat) \ generate_exception_if(!vcpu_has_##feat(), X86_EXC_UD) --- a/xen/arch/x86/x86_emulate/x86_emulate.c +++ b/xen/arch/x86/x86_emulate/x86_emulate.c @@ -6871,6 +6871,17 @@ x86_emulate( elem_bytes =3D 1; goto avx512f_no_sae; =20 + case X86EMUL_OPC_VEX (0x0f38, 0xd2): /* vpdpwuud [xy]mm/mem,[xy]mm,[= xy]mm */ + case X86EMUL_OPC_VEX_66(0x0f38, 0xd2): /* vpdpwusd [xy]mm/mem,[xy]mm,[= xy]mm */ + case X86EMUL_OPC_VEX_F3(0x0f38, 0xd2): /* vpdpwsud [xy]mm/mem,[xy]mm,[= xy]mm */ + case X86EMUL_OPC_VEX (0x0f38, 0xd3): /* vpdpwuuds [xy]mm/mem,[xy]mm,= [xy]mm */ + case X86EMUL_OPC_VEX_66(0x0f38, 0xd3): /* vpdpwusds [xy]mm/mem,[xy]mm,= [xy]mm */ + case X86EMUL_OPC_VEX_F3(0x0f38, 0xd3): /* vpdpwsuds [xy]mm/mem,[xy]mm,= [xy]mm */ + host_and_vcpu_must_have(avx_vnni_int16); + generate_exception_if(vex.w, X86_EXC_UD); + op_bytes =3D 16 << vex.l; + goto simd_0f_ymm; + case X86EMUL_OPC_VEX_66(0x0f38, 0xdc): /* vaesenc {x,y}mm/mem,{x,y}mm= ,{x,y}mm */ case X86EMUL_OPC_VEX_66(0x0f38, 0xdd): /* vaesenclast {x,y}mm/mem,{x,= y}mm,{x,y}mm */ case X86EMUL_OPC_VEX_66(0x0f38, 0xde): /* vaesdec {x,y}mm/mem,{x,y}mm= ,{x,y}mm */ --- a/xen/include/public/arch-x86/cpufeatureset.h +++ b/xen/include/public/arch-x86/cpufeatureset.h @@ -306,6 +306,7 @@ XEN_CPUFEATURE(MCDT_NO, 13*32 /* Intel-defined CPU features, CPUID level 0x00000007:1.edx, word 15 */ XEN_CPUFEATURE(AVX_VNNI_INT8, 15*32+ 4) /*A AVX-VNNI-INT8 Instructio= ns */ XEN_CPUFEATURE(AVX_NE_CONVERT, 15*32+ 5) /*A AVX-NE-CONVERT Instructi= ons */ +XEN_CPUFEATURE(AVX_VNNI_INT16, 15*32+10) /*A AVX-VNNI-INT16 Instructi= ons */ XEN_CPUFEATURE(CET_SSS, 15*32+18) /* CET Supervisor Shadow St= acks safe to use */ =20 /* Intel-defined CPU features, MSR_ARCH_CAPS 0x10a.eax, word 16 */ --- a/xen/tools/gen-cpuid.py +++ b/xen/tools/gen-cpuid.py @@ -284,7 +284,8 @@ def crunch_numbers(state): # feature flags. If want to use AVX512, AVX2 must be supported and # enabled. Certain later extensions, acting on 256-bit vectors of # integers, better depend on AVX2 than AVX. - AVX2: [AVX512F, VAES, VPCLMULQDQ, AVX_VNNI, AVX_IFMA, AVX_VNNI_INT= 8], + AVX2: [AVX512F, VAES, VPCLMULQDQ, AVX_VNNI, AVX_IFMA, AVX_VNNI_INT= 8, + AVX_VNNI_INT16], =20 # AVX512F is taken to mean hardware support for 512bit registers # (which in practice depends on the EVEX prefix to encode) as well From nobody Mon Feb 9 13:41:22 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=suse.com); dmarc=pass(p=quarantine dis=none) header.from=suse.com ARC-Seal: i=2; a=rsa-sha256; t=1691421661; cv=pass; d=zohomail.com; s=zohoarc; b=R4TYJH9lj1DsuFXeO4rSDVZoyGOiJIuawVyn9jXHi3rEbd42LoeQT7e9wgJYT4EEgCmPjfX8yBdH7yp7gh+g3u0LQZj4Q+a213hAnFuUjHxRr/d3a3a0U3DmwTQSP8DPiTR3/sszTzN53wwFYsKlLMhhfZ1YuEUer0We3RpgmvE= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1691421661; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=chCYjHiB2X502WJCa9ozvQcvLibaEFQQSSLt5qFEcLs=; b=Ujp7F6vDVCN9dT8pyDA4LCZqObnKPEXH4V94d6lPlaG4OcvOgyDtMt8tBdzAb+/rgy9DbWMzBgprw0cjqPFUvxq7021gAtvN0MFZ8Jt1WY9wRmSjedh/Dx4egtl2/flfabuL2bldFXzeP30cDcIWIgWROs2X/NF3q/m873ddAhk= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=suse.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1691421661783518.9644177742131; Mon, 7 Aug 2023 08:21:01 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.578628.906226 (Exim 4.92) (envelope-from ) id 1qT229-0002wy-4H; Mon, 07 Aug 2023 15:20:37 +0000 Received: by outflank-mailman (output) from mailman id 578628.906226; Mon, 07 Aug 2023 15:20:37 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1qT229-0002wr-1X; Mon, 07 Aug 2023 15:20:37 +0000 Received: by outflank-mailman (input) for mailman id 578628; Mon, 07 Aug 2023 15:20:35 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1qT227-0002UE-7Z for xen-devel@lists.xenproject.org; Mon, 07 Aug 2023 15:20:35 +0000 Received: from EUR03-DBA-obe.outbound.protection.outlook.com (mail-dbaeur03on2061e.outbound.protection.outlook.com [2a01:111:f400:fe1a::61e]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id f43b0c1c-3535-11ee-b280-6b7b168915f2; Mon, 07 Aug 2023 17:20:34 +0200 (CEST) Received: from DU2PR04MB8790.eurprd04.prod.outlook.com (2603:10a6:10:2e1::23) by PA4PR04MB8014.eurprd04.prod.outlook.com (2603:10a6:102:c7::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6652.25; Mon, 7 Aug 2023 15:20:32 +0000 Received: from DU2PR04MB8790.eurprd04.prod.outlook.com ([fe80::e5cf:5743:ab60:b14e]) by DU2PR04MB8790.eurprd04.prod.outlook.com ([fe80::e5cf:5743:ab60:b14e%5]) with mapi id 15.20.6652.025; Mon, 7 Aug 2023 15:20:32 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: f43b0c1c-3535-11ee-b280-6b7b168915f2 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=VhRrAuVFGrXQ4ZjiZFwc/9PX+5iUJL9+yyA8u0joia2qzxM43X8yTYJarqjQhjA6C0G1kmKFBuSx9DZz5VuR+lrUC+Ckivt+aGralYd108T71pQk6SdvjGF+inkY4adL9YltuQnb9jpgWhZYKvxbacdPj8aVy6jEQ3QXSFvg4x1il+b7D+u6B8MK3cCxpnHhoxXn+sW27aRwnhZ2jAjhlHrkeT6UR10/siSlOr5rSiaDMsVyx+cpSQYmmJT3H1B/XUusPkjlNR6wCM6zRlRlQutb2dspaVFICOzzTmkYwtjNR5HVL9GP27lCaftHKZ2SQFngRUskSbpkKQy5FCyokw== 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=chCYjHiB2X502WJCa9ozvQcvLibaEFQQSSLt5qFEcLs=; b=C/FrrOGEZMyqxv+/zC7ofBhI7YNVyUOPQEA6uJdfY2mrVqz4TWNxfiewb8mrPu04Y9GYIvYYpg5/GeHVx1sA1G3TCoyx4SsaUo6yBy64a73vUwV15/23nENbsmEcq04o80CZmjNlBFbDSWfX2KV5HomZ7eWwkFnxqppL1ZhbzGYtouVPiYFYd3J1m4ounylV1vLOCizziZWfNsEUByhlP0Mf18aJsqLdLmDi8wJOHLhkGRSJTpdtFbHhBVfONnfrLjXVwvc1MiTYnbffSNZtuuOyMD7e5rrriQqpUKOzBWEkfZlRwTef7nz7AojS1/DJJY2hu+PG/9gIXmCZ1W0vXw== 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=chCYjHiB2X502WJCa9ozvQcvLibaEFQQSSLt5qFEcLs=; b=Xt2yRSz4PEbXaea7Vt9Rtft/WFqHQ/1sToKrvCFxggX3E79losa3bZ8+XX3Patc3pp5ifEGM72cxe+00YepiEnDBrIHPXtJzaNcUPEbgeYHZ7ttx5lSbAnZ03FSROW4Dq5KioX7N2/13KUEvp5iBMXg9oslVsveKwFhFAXX5A8kEU/yYU6nrMFILiXRDnSMZtfev3ZOtHDEXFYPMQTc4THauNayhfoJv1fbKVsjWwQNKJXfBzTNVv38Y8s5Ek79n9eTfz+PGu+YLvh0G3OaxlpPCCO78RcOJ/JZQ5cK22+efYlkJQQPXPTzjA10xwRwCwdqPKjlRrGS2/CFIttBbTg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Message-ID: <3a77e584-b6e5-8f1a-d1c7-c4ca0de7b425@suse.com> Date: Mon, 7 Aug 2023 17:20:30 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.14.0 Subject: [PATCH 2/4] x86emul: support SHA512 Content-Language: en-US From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Andrew Cooper , Wei Liu , =?UTF-8?Q?Roger_Pau_Monn=c3=a9?= References: <96f70f2f-8712-9f93-34e3-f56deae364a8@suse.com> In-Reply-To: <96f70f2f-8712-9f93-34e3-f56deae364a8@suse.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: FR2P281CA0071.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:9a::6) To DU2PR04MB8790.eurprd04.prod.outlook.com (2603:10a6:10:2e1::23) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DU2PR04MB8790:EE_|PA4PR04MB8014:EE_ X-MS-Office365-Filtering-Correlation-Id: 25b5bfb5-30a2-47d9-9550-08db9759d75a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: gsgFHMdXv6AUopgztrfhNE8B25nd0dk+wKB+RYRQNmu0Wxzz2c7z7GOViEtR9soEF/QT+iru/JvMRXkQ5bt1xwbQOOFfdy1R4PkB4WQv55e69C8ox9I+i2oU8S1hf91mTUuRPpMKoks4JTKr2Hf89gZML7sV5ZjddUjNvbKcVnenWfXDpx6KpLvj+kqRR5+pTipKL4RT3PyU6g0ew0umq6awuR7W9cbToonZiiChLFG4oXJfcMq9JPj/3W7IJnKMrqH1HGXzx8Xd3f0xvf+qGVwFJ2Y8ZpEr0ZYoZMs8FApbuqPdfXvsz3HkNGaY3n8j8Hx6HXwbaXhXJFj4C6jAeVeftRJ2/S0p2oEqo4UGeRbKSMR7adsFyZT32uM/HDaSqig68nphD631qKsWOm/i5rc2QjxYMHuektOE7Znk8ucUeV6/h3ZOu8seil8IMgSSbcp5G3TNOgEETFqWEE7zoPR5gSxrvtJF5ygosXpTwy/cSw/cvJh3MCzfOCU6Ex16XEC38+r+IdH7ixdcu/T4rJzwztkWUs+qVe1l/Hz5EIceV2far7nxaPy/pAAljOkL4q5aFZNj7H1k20a63R+RjG0D+CwtdIdLunUNnkFurZZAS8W8JxcGrkwsnc2/EkWcwURrWYTmJBHfw8YXrKKH+g== 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:(13230028)(396003)(376002)(136003)(39860400002)(366004)(346002)(451199021)(186006)(1800799003)(86362001)(31696002)(41300700001)(478600001)(6506007)(8936002)(8676002)(26005)(38100700002)(6486002)(2616005)(5660300002)(36756003)(2906002)(83380400001)(54906003)(31686004)(316002)(66476007)(66556008)(66946007)(6916009)(4326008)(6512007)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?MGl6VGNYYjNObm0wbkdaYXp2Y2o3eE5vaTVpdU9HSnpXYkEwNFVXSCt0L0gw?= =?utf-8?B?QkJUaEluY2duZUIyYmlMSFlxSjBNQTIxR3k4emh4T21GQkNmVGZCdFZOQ09a?= =?utf-8?B?dEFGSVNzcFh2MXJRaUllVXUyNmFKTEJ3Z2xoaEU2V21tZEVLd1pqcitVQUJt?= =?utf-8?B?UHpLNlFpMTZvUU1QK244SXRqZll5UjVndHRrSlhvdU1rOGtUSHpPYVF3VTgv?= =?utf-8?B?NHE0d1QvdEtYdzk4MllLUWd6dzJmdnVZMi83dlBCbGZqenNrQU9zR0Zxa25s?= =?utf-8?B?NHdwdEs3MFprMFQ1VEI5VnRURSs5VFNMeDVOdllCL2NlbG5rcE13UFZKMktB?= =?utf-8?B?ZVZHWVllWWJpL1ZuUFZaU1I1UUxYZldIMWt4ckh2b3ZKM2NNeHRSbDRXNDJq?= =?utf-8?B?dDE3N1U0YkErVU1KcmszRzNlWEt5YnU3VmU2WDNNdmlJOTV4dWJqYlhIL0ZO?= =?utf-8?B?azMrY2RxNmxIRnIxbzNhbDZuQVN1TDg2VGxpREgvWCt6eERtajRQMW9nNzcy?= =?utf-8?B?VmRrTlNzVkM3U3VmZ2hHbmkrSlRsSEJrL0lUT2kybFVkVlFocm8zNmR1SGxo?= =?utf-8?B?MW83WHFSRk44VmxaZHljaXR3SVo3NmtOVTVYUUdjRzVuY3dENG5YbW9CYnY1?= =?utf-8?B?NkQ2eXBzZVhnVHV2VjZyRnZPaFBwM0diSmtvZDZpYnRDOHdGaGJQaWlmc0pt?= =?utf-8?B?UVNIeGU3N3Bha0gyakRaMWZKTmJqb2JBbXZoUXNjYkVtRHZKZVJRcDNrcGk5?= =?utf-8?B?UVNzZmYvalMvSm5Ic2k2VmtFZitSMEJNYkc0Wml5a3RwWHo0cUVKNExkZ0Rx?= =?utf-8?B?TjJEZjFER1pPOVc5Y1lEYmo0TkwwalR5NFZscU44Z3JEcVZYLzVRTFNVWDNI?= =?utf-8?B?a2JpWHBGN2twaVRyVnZNWXYzOXBKcnh3Nk1EUWlpWVlHdk5RM1dGa3dkVEJk?= =?utf-8?B?OXQycTZ1REU0RnN2bjZMOStTdGMvbXFKeWtYOFMxaEdKMU9nblgvRHFpYytS?= =?utf-8?B?a013bnVjeFF3MTY0ZDl4ZXE1RTZPNmpmTG9mOXNpVkJKYWZaNHpmWnhCZlVj?= =?utf-8?B?K1RLNTQ2WWRON3J6eXNWWVZESFg1cjdLU2k0aHQ3VkN5bFFocm5pY1hFbmVh?= =?utf-8?B?dGNIWm1HeE01VStJWWxmNHVvcXZoSXhHZEJoZVg4VDc3UVhEY21GUkEydlNo?= =?utf-8?B?YTJVOXJVbzl2STkzOE1jUE05ZWw0b2VQMm81VFVJOEQzTUhBT3ZpKy84S2t3?= =?utf-8?B?KzJvWkpId2xUQkdZWkxoeTRiL1l6a044UVo3ZlpML1E4STF6QlBUaHlVbVkz?= =?utf-8?B?UXRxQS84aTBFUEt5aUtoWmNzQTBkVzNOeHpEUCtKTFlIeklyY3N5aC8wTzZP?= =?utf-8?B?alQyckNUN2V5d1ptZ01KZng2Tjhrdi9sNFJSTWswbG1aaGxld3ViTUpUNVRG?= =?utf-8?B?WVB1S0FLM3RvbTVDVm00YkMybXptKy90WlM4OHNmV0dHL0dLK2FNVzl5SGt4?= =?utf-8?B?dTlWaWZta2tpaUU0R2FRbnJ6WXpOam5ZZ2xWNU5mTytaZHVobEU1T3d3d3Ey?= =?utf-8?B?ek9VTHlZR2tTM0RVQzFTQ1JUMUN5OHM3SjgwWU1mbm9HalM3ZytpYzdFazg4?= =?utf-8?B?VnVWeGV3YVZ5Yi9taXFDQnJCa0NYZTVCWWJFM3VDZFZzZTB5UGo3RVhKOGRM?= =?utf-8?B?ckNKT2YvK0RyYm1FNDFXN0lVbmZadWJnOGk4UDAvZmZkV2J0WGJCUUtCdWtI?= =?utf-8?B?K2JXazIyUy9xcGxlSHN1WjdnV01nSEtieEZmSW5IUlNXVWJyY0pCY1ozY04w?= =?utf-8?B?bEhCNkJmdmZkc0hOR2hXekxFVzYycU5XOHZTMzZiOFQ1WjUvSUdDUkxGcVZH?= =?utf-8?B?VUlheExaZWhZNHU4ZWdrTUVqZXA0NHZ6MzdJV05jZmF4a0hOczVUU1RwRkxR?= =?utf-8?B?b1hJTXlpZnhZQ0pONHZ2UlJ6OEdTaWJ3S0pyZk1tQWc4RnRwc3RoSUFxMDQ4?= =?utf-8?B?SDQrVmQreDNGcXV6TmNaY2FQMDdsT0dVaXhKM2VrVDNPWVlHOFJiZDA2SWpG?= =?utf-8?B?MnZuTC9zek5ib0VMK3VYLzJTZUxFRGg4LzFhZnJmdGcvYjQ3R2ZqNFIvRklh?= =?utf-8?Q?oNKwAnLXVHAXaQrp2XxSuzt1b?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 25b5bfb5-30a2-47d9-9550-08db9759d75a X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8790.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Aug 2023 15:20:32.5394 (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: kAFsKXT2ZzavNlcgcoShdJIDelcJNNXDLbR46W4K3/eDRx6eYBU+RPYtXO/wqzVvCXR7D/KSDN5UTPPCe5AO6Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR04MB8014 X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1691421669603100001 Content-Type: text/plain; charset="utf-8" Since the insns here don't access memory, I didn't think it was necessary to extend our SHA test for them. Signed-off-by: Jan Beulich Reviewed-by: Andrew Cooper --- The need to set op_bytes here is a little odd; I'm inclined to move the generate_exception_if(!op_bytes, X86_EXC_UD) at the top of SIMD handling (near the bottom of x86_emulate()) into the "ea.type =3D=3D OP_MEM" conditional, as it's relevant (used) only there. --- SDE: -arl, -lnl, or -future --- a/tools/misc/xen-cpuid.c +++ b/tools/misc/xen-cpuid.c @@ -185,6 +185,8 @@ static const char *const str_7d0[32] =3D =20 static const char *const str_7a1[32] =3D { + [ 0] =3D "sha512", + [ 4] =3D "avx-vnni", [ 5] =3D "avx512-bf16", =20 [10] =3D "fzrm", [11] =3D "fsrs", --- a/tools/tests/x86_emulator/predicates.c +++ b/tools/tests/x86_emulator/predicates.c @@ -1396,6 +1396,9 @@ static const struct vex { { { 0xbd }, 2, T, R, pfx_66, Wn, LIG }, /* vnmadd231s{s,d} */ { { 0xbe }, 2, T, R, pfx_66, Wn, Ln }, /* vnmsub231p{s,d} */ { { 0xbf }, 2, T, R, pfx_66, Wn, LIG }, /* vnmsub231s{s,d} */ + { { 0xcb, 0xc0 }, 2, F, N, pfx_f2, W0, L1 }, /* vsha512rnds2 */ + { { 0xcc, 0xc0 }, 2, F, N, pfx_f2, W0, L1 }, /* vsha512msg1 */ + { { 0xcd, 0xc0 }, 2, F, N, pfx_f2, W0, L1 }, /* vsha512msg2 */ { { 0xcf }, 2, T, R, pfx_66, W0, Ln }, /* vgf2p8mulb */ { { 0xd2 }, 2, T, R, pfx_no, W0, Ln }, /* vpdpwuud */ { { 0xd2 }, 2, T, R, pfx_66, W0, Ln }, /* vpdpwusd */ --- a/tools/tests/x86_emulator/x86-emulate.h +++ b/tools/tests/x86_emulator/x86-emulate.h @@ -178,6 +178,7 @@ void wrpkru(unsigned int val); #define cpu_has_avx512_vp2intersect (cp.feat.avx512_vp2intersect && xcr0_m= ask(0xe6)) #define cpu_has_serialize cp.feat.serialize #define cpu_has_avx512_fp16 (cp.feat.avx512_fp16 && xcr0_mask(0xe6)) +#define cpu_has_sha512 (cp.feat.sha512 && xcr0_mask(6)) #define cpu_has_avx_vnni (cp.feat.avx_vnni && xcr0_mask(6)) #define cpu_has_avx512_bf16 (cp.feat.avx512_bf16 && xcr0_mask(0xe6)) #define cpu_has_avx_ifma (cp.feat.avx_ifma && xcr0_mask(6)) --- a/xen/arch/x86/include/asm/cpufeature.h +++ b/xen/arch/x86/include/asm/cpufeature.h @@ -176,6 +176,7 @@ static inline bool boot_cpu_has(unsigned #define cpu_has_arch_caps boot_cpu_has(X86_FEATURE_ARCH_CAPS) =20 /* CPUID level 0x00000007:1.eax */ +#define cpu_has_sha512 boot_cpu_has(X86_FEATURE_SHA512) #define cpu_has_avx_vnni boot_cpu_has(X86_FEATURE_AVX_VNNI) #define cpu_has_avx512_bf16 boot_cpu_has(X86_FEATURE_AVX512_BF16) #define cpu_has_avx_ifma boot_cpu_has(X86_FEATURE_AVX_IFMA) --- a/xen/arch/x86/x86_emulate/decode.c +++ b/xen/arch/x86/x86_emulate/decode.c @@ -916,6 +916,14 @@ decode_0f38(struct x86_emulate_state *s, case X86EMUL_OPC_EVEX_66(0, 0x7c): /* vpbroadcast{d,q} */ break; =20 + case X86EMUL_OPC_VEX_F2(0, 0xcc): /* vsha512msg1 */ + case X86EMUL_OPC_VEX_F2(0, 0xcd): /* vsha512msg2 */ + s->desc |=3D TwoOp; + /* fallthrough */ + case X86EMUL_OPC_VEX_F2(0, 0xcb): /* vsha512rnds2 */ + s->simd_size =3D simd_other; + break; + case 0xf0: /* movbe / crc32 */ s->desc |=3D s->vex.pfx =3D=3D vex_f2 ? ByteOp : Mov; if ( s->vex.pfx >=3D vex_f3 ) --- a/xen/arch/x86/x86_emulate/private.h +++ b/xen/arch/x86/x86_emulate/private.h @@ -587,6 +587,7 @@ amd_like(const struct x86_emulate_ctxt * #define vcpu_has_serialize() (ctxt->cpuid->feat.serialize) #define vcpu_has_tsxldtrk() (ctxt->cpuid->feat.tsxldtrk) #define vcpu_has_avx512_fp16() (ctxt->cpuid->feat.avx512_fp16) +#define vcpu_has_sha512() (ctxt->cpuid->feat.sha512) #define vcpu_has_avx_vnni() (ctxt->cpuid->feat.avx_vnni) #define vcpu_has_avx512_bf16() (ctxt->cpuid->feat.avx512_bf16) #define vcpu_has_wrmsrns() (ctxt->cpuid->feat.wrmsrns) --- a/xen/arch/x86/x86_emulate/x86_emulate.c +++ b/xen/arch/x86/x86_emulate/x86_emulate.c @@ -6856,6 +6856,14 @@ x86_emulate( host_and_vcpu_must_have(avx512er); goto simd_zmm_scalar_sae; =20 + case X86EMUL_OPC_VEX_F2(0x0f38, 0xcb): /* vsha512rnds2 xmm,ymm,ymm */ + case X86EMUL_OPC_VEX_F2(0x0f38, 0xcc): /* vsha512msg1 xmm,ymm */ + case X86EMUL_OPC_VEX_F2(0x0f38, 0xcd): /* vsha512msg2 ymm,ymm */ + host_and_vcpu_must_have(sha512); + generate_exception_if(ea.type !=3D OP_REG || vex.w || !vex.l, X86_= EXC_UD); + op_bytes =3D 32; + goto simd_0f_ymm; + case X86EMUL_OPC_66(0x0f38, 0xcf): /* gf2p8mulb xmm/m128,xmm */ host_and_vcpu_must_have(gfni); goto simd_0f38_common; --- a/xen/include/public/arch-x86/cpufeatureset.h +++ b/xen/include/public/arch-x86/cpufeatureset.h @@ -276,6 +276,7 @@ XEN_CPUFEATURE(CORE_CAPS, 9*32+30) / XEN_CPUFEATURE(SSBD, 9*32+31) /*A MSR_SPEC_CTRL.SSBD available */ =20 /* Intel-defined CPU features, CPUID level 0x00000007:1.eax, word 10 */ +XEN_CPUFEATURE(SHA512, 10*32+ 0) /*A SHA512 Instructions */ XEN_CPUFEATURE(AVX_VNNI, 10*32+ 4) /*A AVX-VNNI Instructions */ XEN_CPUFEATURE(AVX512_BF16, 10*32+ 5) /*A AVX512 BFloat16 Instructions */ XEN_CPUFEATURE(FZRM, 10*32+10) /*A Fast Zero-length REP MOVSB */ --- a/xen/tools/gen-cpuid.py +++ b/xen/tools/gen-cpuid.py @@ -285,7 +285,7 @@ def crunch_numbers(state): # enabled. Certain later extensions, acting on 256-bit vectors of # integers, better depend on AVX2 than AVX. AVX2: [AVX512F, VAES, VPCLMULQDQ, AVX_VNNI, AVX_IFMA, AVX_VNNI_INT= 8, - AVX_VNNI_INT16], + AVX_VNNI_INT16, SHA512], =20 # AVX512F is taken to mean hardware support for 512bit registers # (which in practice depends on the EVEX prefix to encode) as well From nobody Mon Feb 9 13:41:22 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=suse.com); dmarc=pass(p=quarantine dis=none) header.from=suse.com ARC-Seal: i=2; a=rsa-sha256; t=1691421682; cv=pass; d=zohomail.com; s=zohoarc; b=HGNxZScijDBTBYTG9q7SCAyow6LLF8Xn/Dl94rNAN74BzWmBPsv3F0mTqOjz5IPQEh+od52S3wTc9OgNJ2vr8idpGfd6XuoYunyyN6AYoOaQNaMJczO9/gT1oK0Cy1DhkFoIhf/RzHPw7CX+bQAYRwqc3HO85teS+ukXyyc+6BU= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1691421682; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=ocRc9efOKOJP+qtfngHzEB0n57W85tzVY14dw9xIXQE=; b=ReeESEkejnbkw0tzrMjuDKiTVqc5aeFOFS1mpwl/dO6zVCEqZwsJE6MDWO6uTttQPuCxnciRe9JgHC+r8ZbW68bgFChI3cu/Bipf0zmaVBFW4xBXr+wRLRYI5x9SfYQ6aBoiRdc2hGsx7b9v3gsEZyZFzdgcc0YLQ7heo6Mwkpk= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=suse.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1691421682708300.225221378147; Mon, 7 Aug 2023 08:21:22 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.578634.906235 (Exim 4.92) (envelope-from ) id 1qT22T-0003YX-DS; Mon, 07 Aug 2023 15:20:57 +0000 Received: by outflank-mailman (output) from mailman id 578634.906235; Mon, 07 Aug 2023 15:20:57 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1qT22T-0003YM-Aa; Mon, 07 Aug 2023 15:20:57 +0000 Received: by outflank-mailman (input) for mailman id 578634; Mon, 07 Aug 2023 15:20:55 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1qT22R-0002UE-P7 for xen-devel@lists.xenproject.org; Mon, 07 Aug 2023 15:20:55 +0000 Received: from EUR03-DBA-obe.outbound.protection.outlook.com (mail-dbaeur03on20625.outbound.protection.outlook.com [2a01:111:f400:fe1a::625]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 005bc6b8-3536-11ee-b280-6b7b168915f2; Mon, 07 Aug 2023 17:20:55 +0200 (CEST) Received: from DU2PR04MB8790.eurprd04.prod.outlook.com (2603:10a6:10:2e1::23) by PA4PR04MB8014.eurprd04.prod.outlook.com (2603:10a6:102:c7::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6652.25; Mon, 7 Aug 2023 15:20:53 +0000 Received: from DU2PR04MB8790.eurprd04.prod.outlook.com ([fe80::e5cf:5743:ab60:b14e]) by DU2PR04MB8790.eurprd04.prod.outlook.com ([fe80::e5cf:5743:ab60:b14e%5]) with mapi id 15.20.6652.025; Mon, 7 Aug 2023 15:20:52 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 005bc6b8-3536-11ee-b280-6b7b168915f2 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=d7EIhWUx9X5MFM82gjzS3N796PCNg2Nx/b7Ir6pVDbp/uVXz5d2Nw6UGZO0VTTmwJAE0K3pqDF+XkzszyuUhVPB4Mp9wu8tx1u6Dom23xSd8xEm+Op40pwzQrtVhhiGUD6DvsLvORXA1BhxLRWIozCsCozEslAvhzOH0wn6qwqp9YUf5SAEwwuXxN1A3C2lDk0HKMstWxk5R3L1SlSg2dVH9Pn5aGNi8C101mqkMHi25G2/ST9CgMmsGY3HECkvZNXnyrqYGWblm6Dkc6I++OnBOUQ5mqxOTn2LdjrqV+2+yVqt0izMgdYvy/XmmPUQWpBaJV4wlwUyDwMYwbp60vg== 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=ocRc9efOKOJP+qtfngHzEB0n57W85tzVY14dw9xIXQE=; b=WLiLcxkaw0Ek8Vy4iQDbmagLIhJ3bAWequn+l5sSfOfOQKHZ4EFxf32fzd2KMLrPOs5h67OSlAbGHVEKSwinWNuFaG04pJeSzwNdL2f6sKIzKXC8T1H9HTsD6mkwxo/UtB2ae4otFNGRjxYft8f8uYQQo64zacAadLmvVz7WKaBeG1AjbxzKUo4ylop4Epv8WSp3Wn/mWEWned+jSlWWATeL1ZCIWy1ukhFjEXQvmw9RMI+ND40wa7+/WGHcVo8HNO4z0gy0cKXMwAuif9ZmX/UDyy0/4OQQAPYHefUedbxEM3snewDYYa54WLIJnMP2OUQclfRNyMJWNGQuiE3Y8Q== 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=ocRc9efOKOJP+qtfngHzEB0n57W85tzVY14dw9xIXQE=; b=I4djyYTaUtunpN6LX87rVaeXayiK0p02oRxc/OwiWRMLH7g/lFIiE5M9pKiuhyqDkhHuoml+cxqEdrii2EX/vecGIwAPc/Dy+2yMgRy/jIjpeMzVfc82R9TukCvePYYLv7J8a+/PlIKmNTl+agZnygRzCJ+FnIwSuEHoPtEbMe76sKdOtkQUHFLT8M/R/lQundREKDZaRNRiSq9EZf+HCNkyT8fC/Zb5JkbjHPvHACv+iBhLNxWPSgRrJ6K0wl/7HsughBVGo4/jn1lMfcmNfNTZ819AKDTK8yycbOFXd66OowrA3UcVbQzzptECqVqKmcIYutrC75TXh/LrNMf+bQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Message-ID: Date: Mon, 7 Aug 2023 17:20:50 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.14.0 Subject: [PATCH 3/4] x86emul: support SM3 Content-Language: en-US From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Andrew Cooper , Wei Liu , =?UTF-8?Q?Roger_Pau_Monn=c3=a9?= References: <96f70f2f-8712-9f93-34e3-f56deae364a8@suse.com> In-Reply-To: <96f70f2f-8712-9f93-34e3-f56deae364a8@suse.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: FR2P281CA0185.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:9f::18) To DU2PR04MB8790.eurprd04.prod.outlook.com (2603:10a6:10:2e1::23) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DU2PR04MB8790:EE_|PA4PR04MB8014:EE_ X-MS-Office365-Filtering-Correlation-Id: bcdb9b20-dd5b-4f0b-dc56-08db9759e358 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: EiIDVZZVLe+Ztj5c8zIrt5ANmpysyjb9XP64OcOMR3pmVPzrTJb904jAVGaZRcwGMWVGMCIit6NScqo70ZfNWz94HwQC82FTr0bSLlX81WTXEJBr5R2/kh9+UC4SvlLbS1IdKikt+PgU02w1jhKnRFqQR2K1yrd3oydeuIs+v1Wc6BNc28kKx6P0HnOhfG83wGb9sAP+heCGR4XDywvPvcP+Ge0OQmHWFtGhVMvID7zoXgH7JV5aKDApbgjao4OS6PUlKLXMbok9ktzZPeG8S4DpHMphO4w2CKSERpWbjoRLHuOvjhOndMGg6jq6leS6kMJmrfXWRqxBIG/+wGa5kBq0SRmPbTw5kFx88ONmzo6Kg7zd+b5iuSfZAp6mnSQ5RKRcM96wdg9sLk7fc5wxviqdDZB8RXbepE5dY6SU4KQ78xKV85pS8jF8slrRUCNFFO0itraSNbrlvIJOgjYLd/QJdKOrM2JXwlbhbGiTag7wGX/4X193x0FV48VyTmjgtAaWZpwic/TNiyEGuTq4U5In+QzgoMaHpGfJYI2h4KkQzlE5TWMXr+zBfHtJBgvTzTZKk/YgypUx7WJV5442NWYEz+p7dkem/jZVE7vnfB1jMTsvviSv45TzqMBWBvyYoCSh53TaePekMuEYKTi7zw== 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:(13230028)(396003)(376002)(136003)(39860400002)(366004)(346002)(451199021)(186006)(1800799003)(86362001)(31696002)(41300700001)(478600001)(6506007)(8936002)(8676002)(26005)(38100700002)(6486002)(2616005)(5660300002)(36756003)(2906002)(83380400001)(54906003)(31686004)(316002)(66476007)(66556008)(66946007)(6916009)(4326008)(6512007)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?RnFwQzgrK01CaDRrSFNTR2R3L3E3S0x6ZG1yM3R1ak1hYU1UajJHbS9wVUMz?= =?utf-8?B?M3VHbFk4TEgxODZrbDdTYldFMCt6US91b0E2V0NBUExvc2dQY1dFdEZ2SUJ5?= =?utf-8?B?N3RkV0hicXVTWC9VZGRoaVZFdnhpTUFmSlh3L0Y4STlUUXdlbU1jOUN1aXB0?= =?utf-8?B?YnNESUxCVW5MMTI3MVNlTFI5V0c3dzdoTEZtN3J3RnJ6WlBtekNnaXRUK05I?= =?utf-8?B?dndkdHBTaWl5Z1JIaSt1Q1pmaDN2R005bzQwNWlxWUtZSis4TmU2VWFEamUy?= =?utf-8?B?VytvQUt3dHVYek5KRDBtV2VmTUROT24vd3N2c1dQSEd1alhReGJsMVIweDR2?= =?utf-8?B?a0lEMWlCdDRaK1VwaUphR2lMdGhJMnFqRHI3cEU5VVZIWjNFdHZFSnBqYkFC?= =?utf-8?B?TU51UmJqamxyQ0V6RVlueTUyZWc2VDNSYnRJRjlWTGV5eHZwY1Nsbk5qQXd2?= =?utf-8?B?akxEQmV5bWlMZll6Ull4YUIzYWNOck5Zd21IVUIzNGRVaC9JQ0xLMkFmREht?= =?utf-8?B?ajRic0xmK2JEVUpDajNkQlJZNkVVUWxYMzJJYlBwUFZmMUFSZHArZzdZUkxm?= =?utf-8?B?ZWJ1aWJEMzR0b3Jqd0FneVhjVjFDblAzd1FTY0dQTlZFcE5nbmdkRDd2bVY4?= =?utf-8?B?dDFERmpuNDRRZzhOWVcyZGRtNFpBYU8zRWZjVngvWm9KbFJsTEJrbjVRb3VZ?= =?utf-8?B?OERQTGViT1hRTUtvVXRUUVVYenlFeTJtWEZ2Tytob2tYcmtOKzB3c3FOTlR4?= =?utf-8?B?STJkL1pYTE1Qemk4dXB4KzAwM2Zvemp6MWJBazhVTVVmUU12cDZOTTVIVUhN?= =?utf-8?B?b1pucVZwZDFrcEJNSFFpNnZWcFFWNStEU2ROaGpKRTYvbHRHbWpGQzZ6aGEw?= =?utf-8?B?M1FjQjBDNmlLblJCNC9ZL0FUSzFNWWJ1NkJuSUJCYWpzdld3SmxmajBHanc5?= =?utf-8?B?clNCT216UVdsK2xENlFKN21raEcydEVxUXRmY09TSTVpY2NDK0NDYmtvOWdQ?= =?utf-8?B?OHljeHFLVXNhamVUSXVmL1dmK2JQL2taZUhhMFVVb2VQSjZpOWVNSVpsUEVs?= =?utf-8?B?YXJlMTQvSkdrbit5bnMwQlZQWUFXalk3MVpkRW1DRGlnWVhuYjRpclIzdnY1?= =?utf-8?B?YVBWUFpQUnhvUEg4Q0llQkJBS1lpVTU5TUhwY2Y2RUNaTk93U1RlOTBQb0xC?= =?utf-8?B?Wmh0U3VSOTB6VGQvZWlGcGtDRWN6QzhYTHFjNVA1TnVXUzd5TWt0Rnpsa1Jt?= =?utf-8?B?WjFXV3RyeHVEd0VLVWpOVEtvRGRvc2VLNGNESG54YVZZWnk4SFFDWWQ5OThG?= =?utf-8?B?VjBUQnNUSlNGbmV5TTFwb05UTVp0N0ptcHh3Yk5kckF3RUlRUDJsbFpPVXkr?= =?utf-8?B?bUtZaFcxOFZXRllBU09Vb2szODd2Rk1DN0VzYjFpWnNpUmw2dFpKMXFLU25z?= =?utf-8?B?ZkI5Q3dFK1FzUTQxZHZRMVRMc3VNWkdWYU9GYlUydmsvY2J1OVBJbWRQTVN5?= =?utf-8?B?K0pYL0Q4UEtSS210NER3MVo2T1Vvc3FUZ2RDNXBEMmtXaGhoS1ptZmVsOTZR?= =?utf-8?B?b1BaY1ZTZ0QwcDZLRW90RGUvT1JyVkN6WVV4ZDBJQXB4MHZlSWlRTURtTGlJ?= =?utf-8?B?VkpwdDErcFBGSkRuS0Y3eXZBMVQ3R1ZJaVA2TUhlb0lVZmNkSzMyNGFpVzdm?= =?utf-8?B?eDJ5cTVuTVNoeVA2VWNYSTJmWmRJYS9rV3p4b2liVUhaSkZ1cWZxd21RdlNk?= =?utf-8?B?aFVyUHRMeSs1Nm5PcGFRTEV0dlhmb3lBSHdxL012VG00a2I5SWY3cHRKeGl6?= =?utf-8?B?VzIxU3U5TXE2aThiZlM4dGtOazFJRGh0allyRkxKRFRCdDhLMVNmRHhKYkVG?= =?utf-8?B?UmpaTVM2Zi9JY2hmMmV0ZTFtMUF4WTgyMU9TMFJTRS84ejhVbW9YeUVRTm9u?= =?utf-8?B?TTUzRllxTEFnM3VUZmxOZUd4UEhuclpkTzMzdmF4OGhTZFZOaUlGc2o2eUp2?= =?utf-8?B?Y1lOVnZqeno1QlZKNXFjRkJjV3FvYXNGeDYzQk5pMTI5alNVemhZMjI5eTJG?= =?utf-8?B?MVFDNHBLcFlTNWR1dkNIMWdFRDlQZWJaMEp3TkMwZm1VUlkwenFtcERtbkEv?= =?utf-8?Q?1K1AYYYcLOVTuJd1K2G5206Ru?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: bcdb9b20-dd5b-4f0b-dc56-08db9759e358 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8790.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Aug 2023 15:20:52.6361 (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: Z29IhwEbF31gzUM8zL+QGNNyOnG3/fsyCdaK9wSIFwgm5MfFsP00p8WB7YvoJAdPMoyKGg6eIwoX51VKAyk/AQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR04MB8014 X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1691421684476100001 Content-Type: text/plain; charset="utf-8" Since the insns here and in particular their memory access patterns follow the usual scheme, I didn't think it was necessary to add a contrived test specifically for them. Signed-off-by: Jan Beulich Reviewed-by: Andrew Cooper --- SDE: -arl, -lnl, or -future --- a/tools/misc/xen-cpuid.c +++ b/tools/misc/xen-cpuid.c @@ -185,7 +185,7 @@ static const char *const str_7d0[32] =3D =20 static const char *const str_7a1[32] =3D { - [ 0] =3D "sha512", + [ 0] =3D "sha512", [ 1] =3D "sm3", =20 [ 4] =3D "avx-vnni", [ 5] =3D "avx512-bf16", =20 --- a/tools/tests/x86_emulator/predicates.c +++ b/tools/tests/x86_emulator/predicates.c @@ -1406,6 +1406,8 @@ static const struct vex { { { 0xd3 }, 2, T, R, pfx_no, W0, Ln }, /* vpdpwuuds */ { { 0xd3 }, 2, T, R, pfx_66, W0, Ln }, /* vpdpwusds */ { { 0xd3 }, 2, T, R, pfx_f3, W0, Ln }, /* vpdpwsuds */ + { { 0xda }, 2, T, R, pfx_no, W0, L0 }, /* vsm3msg1 */ + { { 0xda }, 2, T, R, pfx_66, W0, L0 }, /* vsm3msg2 */ { { 0xdb }, 2, T, R, pfx_66, WIG, L0 }, /* vaesimc */ { { 0xdc }, 2, T, R, pfx_66, WIG, Ln }, /* vaesenc */ { { 0xdd }, 2, T, R, pfx_66, WIG, Ln }, /* vaesenclast */ @@ -1490,6 +1492,7 @@ static const struct vex { { { 0x7f }, 3, T, R, pfx_66, Wn, LIG }, /* vfnmsubsd */ { { 0xce }, 3, T, R, pfx_66, W1, Ln }, /* vgf2p8affineqb */ { { 0xcf }, 3, T, R, pfx_66, W1, Ln }, /* vgf2p8affineinvqb */ + { { 0xde }, 3, T, R, pfx_66, W0, L0 }, /* vsm3rnds2 */ { { 0xdf }, 3, T, R, pfx_66, WIG, Ln }, /* vaeskeygenassist */ { { 0xf0 }, 3, T, R, pfx_f2, Wn, L0 }, /* rorx */ }; --- a/tools/tests/x86_emulator/x86-emulate.h +++ b/tools/tests/x86_emulator/x86-emulate.h @@ -179,6 +179,7 @@ void wrpkru(unsigned int val); #define cpu_has_serialize cp.feat.serialize #define cpu_has_avx512_fp16 (cp.feat.avx512_fp16 && xcr0_mask(0xe6)) #define cpu_has_sha512 (cp.feat.sha512 && xcr0_mask(6)) +#define cpu_has_sm3 (cp.feat.sm3 && xcr0_mask(6)) #define cpu_has_avx_vnni (cp.feat.avx_vnni && xcr0_mask(6)) #define cpu_has_avx512_bf16 (cp.feat.avx512_bf16 && xcr0_mask(0xe6)) #define cpu_has_avx_ifma (cp.feat.avx_ifma && xcr0_mask(6)) --- a/xen/arch/x86/include/asm/cpufeature.h +++ b/xen/arch/x86/include/asm/cpufeature.h @@ -177,6 +177,7 @@ static inline bool boot_cpu_has(unsigned =20 /* CPUID level 0x00000007:1.eax */ #define cpu_has_sha512 boot_cpu_has(X86_FEATURE_SHA512) +#define cpu_has_sm3 boot_cpu_has(X86_FEATURE_SM3) #define cpu_has_avx_vnni boot_cpu_has(X86_FEATURE_AVX_VNNI) #define cpu_has_avx512_bf16 boot_cpu_has(X86_FEATURE_AVX512_BF16) #define cpu_has_avx_ifma boot_cpu_has(X86_FEATURE_AVX_IFMA) --- a/xen/arch/x86/x86_emulate/decode.c +++ b/xen/arch/x86/x86_emulate/decode.c @@ -439,6 +439,7 @@ static const struct ext0f38_table { [0xd3] =3D { .simd_size =3D simd_other }, [0xd6] =3D { .simd_size =3D simd_other, .d8s =3D d8s_vl }, [0xd7] =3D { .simd_size =3D simd_scalar_vexw, .d8s =3D d8s_dq }, + [0xda] =3D { .simd_size =3D simd_other }, [0xdb] =3D { .simd_size =3D simd_packed_int, .two_op =3D 1 }, [0xdc ... 0xdf] =3D { .simd_size =3D simd_packed_int, .d8s =3D d8s_vl = }, [0xf0] =3D { .two_op =3D 1 }, @@ -519,6 +520,7 @@ static const struct ext0f3a_table { [0xc2] =3D { .simd_size =3D simd_any_fp, .d8s =3D d8s_vl }, [0xcc] =3D { .simd_size =3D simd_other }, [0xce ... 0xcf] =3D { .simd_size =3D simd_packed_int, .d8s =3D d8s_vl = }, + [0xde] =3D { .simd_size =3D simd_other }, [0xdf] =3D { .simd_size =3D simd_packed_int, .two_op =3D 1 }, [0xf0] =3D {}, }; --- a/xen/arch/x86/x86_emulate/private.h +++ b/xen/arch/x86/x86_emulate/private.h @@ -588,6 +588,7 @@ amd_like(const struct x86_emulate_ctxt * #define vcpu_has_tsxldtrk() (ctxt->cpuid->feat.tsxldtrk) #define vcpu_has_avx512_fp16() (ctxt->cpuid->feat.avx512_fp16) #define vcpu_has_sha512() (ctxt->cpuid->feat.sha512) +#define vcpu_has_sm3() (ctxt->cpuid->feat.sm3) #define vcpu_has_avx_vnni() (ctxt->cpuid->feat.avx_vnni) #define vcpu_has_avx512_bf16() (ctxt->cpuid->feat.avx512_bf16) #define vcpu_has_wrmsrns() (ctxt->cpuid->feat.wrmsrns) --- a/xen/arch/x86/x86_emulate/x86_emulate.c +++ b/xen/arch/x86/x86_emulate/x86_emulate.c @@ -6890,6 +6890,12 @@ x86_emulate( op_bytes =3D 16 << vex.l; goto simd_0f_ymm; =20 + case X86EMUL_OPC_VEX (0x0f38, 0xda): /* vsm3msg1 xmm/mem,xmm,xmm */ + case X86EMUL_OPC_VEX_66(0x0f38, 0xda): /* vsm3msg2 xmm/mem,xmm,xmm */ + generate_exception_if(vex.w || vex.l, X86_EXC_UD); + host_and_vcpu_must_have(sm3); + goto simd_0f_ymm; + case X86EMUL_OPC_VEX_66(0x0f38, 0xdc): /* vaesenc {x,y}mm/mem,{x,y}mm= ,{x,y}mm */ case X86EMUL_OPC_VEX_66(0x0f38, 0xdd): /* vaesenclast {x,y}mm/mem,{x,= y}mm,{x,y}mm */ case X86EMUL_OPC_VEX_66(0x0f38, 0xde): /* vaesdec {x,y}mm/mem,{x,y}mm= ,{x,y}mm */ @@ -7762,6 +7768,12 @@ x86_emulate( fault_suppression =3D false; goto avx512f_imm8_no_sae; =20 + case X86EMUL_OPC_VEX_66(0x0f3a, 0xde): /* vsm3rnds2 $imm8,xmm/mem,xmm,= xmm */ + host_and_vcpu_must_have(sm3); + generate_exception_if(vex.w || vex.l, X86_EXC_UD); + op_bytes =3D 16; + goto simd_0f_imm8_ymm; + case X86EMUL_OPC_66(0x0f3a, 0xdf): /* aeskeygenassist $imm8,xmm/m1= 28,xmm */ case X86EMUL_OPC_VEX_66(0x0f3a, 0xdf): /* vaeskeygenassist $imm8,xmm/m= 128,xmm */ host_and_vcpu_must_have(aesni); --- a/xen/include/public/arch-x86/cpufeatureset.h +++ b/xen/include/public/arch-x86/cpufeatureset.h @@ -277,6 +277,7 @@ XEN_CPUFEATURE(SSBD, 9*32+31) / =20 /* Intel-defined CPU features, CPUID level 0x00000007:1.eax, word 10 */ XEN_CPUFEATURE(SHA512, 10*32+ 0) /*A SHA512 Instructions */ +XEN_CPUFEATURE(SM3, 10*32+ 1) /*A SM3 Instructions */ XEN_CPUFEATURE(AVX_VNNI, 10*32+ 4) /*A AVX-VNNI Instructions */ XEN_CPUFEATURE(AVX512_BF16, 10*32+ 5) /*A AVX512 BFloat16 Instructions */ XEN_CPUFEATURE(FZRM, 10*32+10) /*A Fast Zero-length REP MOVSB */ --- a/xen/tools/gen-cpuid.py +++ b/xen/tools/gen-cpuid.py @@ -262,7 +262,7 @@ def crunch_numbers(state): # for the XOP prefix). VEX/XOP-encoded GPR instructions, such as # those from the BMI{1,2}, TBM and LWP sets function fine in the # absence of any enabled xstate. - AVX: [FMA, FMA4, F16C, AVX2, XOP, AVX_NE_CONVERT], + AVX: [FMA, FMA4, F16C, AVX2, XOP, AVX_NE_CONVERT, SM3], =20 # This dependency exists solely for the shadow pagetable code. If= the # host doesn't have NX support, the shadow pagetable code can't ha= ndle From nobody Mon Feb 9 13:41:22 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=suse.com); dmarc=pass(p=quarantine dis=none) header.from=suse.com ARC-Seal: i=2; a=rsa-sha256; t=1691421703; cv=pass; d=zohomail.com; s=zohoarc; b=JZz/4zPXtdcYilT9FHkH3BUrQNCmBdZJjMeS4Lr8tvqS/Y3qv+lJ3QM+aTK1Z6b5AmL3mOlJv4IxrG5Ozsw1fYocm3a4SBQgHGVaay0KHpfSIG9z2nIlsB4w1mtGHp5Y4tBHOQz1HLWy277/syhvhn5QYsBwLONCjQg3Si+iC9I= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1691421703; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=jhTNq5mY23M6wTZvUr+tr+W7Hwm3yXoZVbgG/A6dibk=; b=bXqu9MNjotC0654zUv+CTku0Sk/HPHU4zbgysdF44k6P3EVXAX/lQ7/bWBb+0ZUyndQajAJQJ5b+ngqANy40KTD/sS4bw/HrEjg3n+FsY9WsBNjIdL6BkkVwlgSaKw4Wrb6KwPe+IiJ8LOqa44zTb8ElUP5qTNBES0k9Ab9haeM= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=suse.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1691421703036366.7010496115752; Mon, 7 Aug 2023 08:21:43 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.578641.906246 (Exim 4.92) (envelope-from ) id 1qT22u-0004By-Qx; Mon, 07 Aug 2023 15:21:24 +0000 Received: by outflank-mailman (output) from mailman id 578641.906246; Mon, 07 Aug 2023 15:21:24 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1qT22u-0004Br-Nm; Mon, 07 Aug 2023 15:21:24 +0000 Received: by outflank-mailman (input) for mailman id 578641; Mon, 07 Aug 2023 15:21:23 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1qT22t-0003Ol-Fe for xen-devel@lists.xenproject.org; Mon, 07 Aug 2023 15:21:23 +0000 Received: from EUR03-DBA-obe.outbound.protection.outlook.com (mail-dbaeur03on20603.outbound.protection.outlook.com [2a01:111:f400:fe1a::603]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 10540025-3536-11ee-8613-37d641c3527e; Mon, 07 Aug 2023 17:21:21 +0200 (CEST) Received: from DU2PR04MB8790.eurprd04.prod.outlook.com (2603:10a6:10:2e1::23) by PA4PR04MB8014.eurprd04.prod.outlook.com (2603:10a6:102:c7::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6652.25; Mon, 7 Aug 2023 15:21:19 +0000 Received: from DU2PR04MB8790.eurprd04.prod.outlook.com ([fe80::e5cf:5743:ab60:b14e]) by DU2PR04MB8790.eurprd04.prod.outlook.com ([fe80::e5cf:5743:ab60:b14e%5]) with mapi id 15.20.6652.025; Mon, 7 Aug 2023 15:21:19 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 10540025-3536-11ee-8613-37d641c3527e ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BxOFz3syf6hSkSnwsuWllqOeO3420Okc4hkKnIQi7UZr9gGJ2Q6bPME0/m8NRhHKkiDwN/ZTGv4s/lnI/3u27hJBugfqr/4fb6wx1ZFzA2DpqPYLb+C/yRpO4HWTpa+Wa1wx8LXSNnzkPBsy3//gcBDAZ25bJUSiHL9kWpgN/gAUDFjt1w9e9NJhnMrSJiYqeRBgDx2LnwnvZ8UTtEF1Odk1d+L8INAq71689xZBa2+y4vBoduHXp9lI/uGBnDZs6pZUyo3vckl4MTJlB3oF4U9vzDSp2dHVK6lIV2eMi3aOfxuahKtpw9zu4WeDjFsS8GsGfRR/so0QCUcmqnoLyA== 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=jhTNq5mY23M6wTZvUr+tr+W7Hwm3yXoZVbgG/A6dibk=; b=VK4Lq2CXDByO1Al2WWJHc4zrsDbTGO3aQuzRNmnNWO67jfaH9V06SYcBO66nqRQueHb3jvSrddhJtwfWxwgGsYVveM4Sl6x0qz7JN0HIINiH1B8J6N1VxExqY9S+GuzJudo8hXmT2cVWH5c3L/2qK8lssdUR58PIowYlUmmffdYJ+CK4B475P/ak8zVZIHnRkdnvn/K5Y0o9+JZJ+gRPJ1aJF1M2EfNDOGuVa//y+G3+QhnosR8GhpKlvAz/ENTzX6hC91xojt5cEJ0bmfkcX/4F/MLG/oyo0QgL7f5WyZRrAMTE2mz3Nzlgjk6bqQ1w9uaT1cX/cNRmEfM+bXTO2w== 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=jhTNq5mY23M6wTZvUr+tr+W7Hwm3yXoZVbgG/A6dibk=; b=tV+n5np/D8XBYUMsBRlXFm3hHKsC+x4OiUgIV633vcTGTJf3u2/AVd4uZecwn9iDIVlXEtzPXRMvBXkHN1bwmMURBuHIYl6c1ei+a9JMFs77/sLcWbWH3cunaLRHrN4s8fDu2ylzpCuu+OA7P1Wdoz2L3PE08QbgecqfqittqskIA2uzSbXDKCBYflxEcXzhvl8j5puM1AliNpdhnGvp47pcwUoFhKrsAVyaqwUArEnk77vQ7UWSQ+IIoXmPkyLCquwOgXU2GuFX6bfP35sh32dkQPCpgMWxbsyLFtGDgR8eHJpaQk2wZPWc3V9BACTjN9AZYBBHiY+4N4hyBpyUrA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Message-ID: Date: Mon, 7 Aug 2023 17:21:17 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.14.0 Subject: [PATCH 4/4] x86emul: support SM4 Content-Language: en-US From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Andrew Cooper , Wei Liu , =?UTF-8?Q?Roger_Pau_Monn=c3=a9?= References: <96f70f2f-8712-9f93-34e3-f56deae364a8@suse.com> In-Reply-To: <96f70f2f-8712-9f93-34e3-f56deae364a8@suse.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: FR2P281CA0108.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:9c::19) To DU2PR04MB8790.eurprd04.prod.outlook.com (2603:10a6:10:2e1::23) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DU2PR04MB8790:EE_|PA4PR04MB8014:EE_ X-MS-Office365-Filtering-Correlation-Id: e58b85a0-e3c9-4ff0-9b1e-08db9759f36d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: tfNOxMCUMpmUDTGMaO7wSEou8YhMCsikPHTexh9QHK1uVJLoHHo0LgrFoqRM+v2AXlSGqZ6eiP0Gb+7qzQ1u5BumXQsHgEVzAU2/HHiS1EJXRUGp6enRcgCdJemWolgnH3HrZ0evmwOR5pNOpbp2CI9eV5sjjTF004dZ+2eAt0Q3qRpTYCgX/3zxomv6sA9ftSrnHs/v4EQ0J4DZOmbo6wgkorgilsvfs4NNhngFC1Gfi9+rFQhuemtYg/av8bRYyEgUJ1CvW5hzEasGS/MwMPtESn/r78eJsEsP14rJnZmP8WVBg3/bUTdkCQr1r4RsZHZhff6Gr9IOirA2GPa0T6lVDHysYVuT3KtApdTrFdJqFPylAJHcXv095FjD8T39nUv9cRWx/R8UOpvkpr9i58wiRHTDnSjOZAwO/l8GQsb9w5KlTd1RyMopt1cR9mVfAGAV9sqhVP3GTu1MfneDmZVLf74wCg98i5utjcpxkn/kNI7/0WlQRyxviaPOPIa4MZpN3sZkhLW8a1bk47+OvF2zulPVOZg4wEDEOwyqcmxGYK9/N2gBMFQei02NOpnJjaJmU1LT89kfgVMG5ytby9i60Xca8PIQJFKLsH8txercybGaWPZx5nE7gJXEc0LB6t1MtmqDrFoBAQVRYOfuLQ== 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:(13230028)(396003)(376002)(136003)(39860400002)(366004)(346002)(451199021)(186006)(1800799003)(86362001)(31696002)(41300700001)(478600001)(6506007)(8936002)(8676002)(26005)(38100700002)(6486002)(2616005)(5660300002)(36756003)(2906002)(83380400001)(54906003)(31686004)(316002)(66476007)(66556008)(66946007)(6916009)(4326008)(6512007)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?SFNaZE03U3g0ZlBleS82U0J2a2IzZnJLKzdic2EwajVKWTdkbmpXL29tekRy?= =?utf-8?B?UWtsMUdSOStDaTc4WVIwNUYrUXovZVErR0ZGWGxEd2hxN3c4ZDRMQXk1eXFz?= =?utf-8?B?eGhSZFJxR2tuOTF2Um9hZVNDVDNCcmROK3FLTUsydDdOcTNnZWZVcDlMbld3?= =?utf-8?B?UktJWkJDNkJ2aFAxUGNwSlVrcmJOVHVCckdJTFRCcTByT1FWRSthTWFseWRT?= =?utf-8?B?R3dHOS9YMWVIakhidHBJT3ZvaFhjVlZONitCT3FaMUtTYzlTZzVUQ251NDZp?= =?utf-8?B?UXQxY1JFSlBBbU40dUx5R283NWZCekpCbEhkNkh6eGpqSHMvUzRTLzg3akRO?= =?utf-8?B?SXpTbXk2TTlaMmZTeDdvaGlLSGEzZzdFOU5kSG1jQlhETGN0NmZRMkw4aUZH?= =?utf-8?B?Tjl2YUdlTlRiRC9mTDFSOFpVSld4R1BIeThUcUZsaGQxbnJsd2M3S3NRQVYr?= =?utf-8?B?YnUrbUI0S2FYdk1BajdxS1BCaHorZjJSQXkvWU81YWtsOVJKbUNFRWx4MFJh?= =?utf-8?B?UGJqTkx2YkVGT1dWdWkzM0dQako3d0IxWFY0aUNHY0JLOWw2NjBzS0FqeDB1?= =?utf-8?B?WWFFeUdlNmpQYzhaRkZ2OFdUa1FBeWFuL1ZCbEJVWXBKbEl3dUNaM2FzeS9l?= =?utf-8?B?OFdLQ3RDa0JDdVByd1k4R1I4WGZCcjJlazFwMUJaa1VHdGNEWWg1ckdzZVlD?= =?utf-8?B?cE5Idi9FY1J0aG1GQjJURklPSGhqWHpUbXFsVTZpZUFKT0wwYWhacnBIZk9v?= =?utf-8?B?cGtPdG1Na283M1MzaWlnOFhFc1V3djRvSmNXem0wcnBVZFNBRU9CRHFaVkZj?= =?utf-8?B?WkMySHRkUTlZa1c5akFNS0tyQmFJdXdNMURCSGxURzhuQXRNTEVtL2trWER1?= =?utf-8?B?bXB0Nk1DT2JkMDYxUnpTZzZ6VFAzbXBFckNFalZWL0dqUkZISkNja2VDOS9Q?= =?utf-8?B?K2g0WmZPVjZrSWhrUE5PUTA4cjRVNVc2VFB3NHhGcTJjNnVvU3l4OUVRU01x?= =?utf-8?B?enlQaFEvMEpWOU1wSkFtL2V2bUR1SEliaVdGS2toK3lMTWxlVElUU3k1UzRY?= =?utf-8?B?YVhiR3Z5dGEvWVdqbFBPVS9PVjJ4MzVkM1l2WFZEZVJBd1l5enFneXp3endB?= =?utf-8?B?MDcyZGl2Y0NlR1kzaXA0b01OUG01TVhXZ3FDWjhhc1doY1R0Tkl1ZDVUNjR4?= =?utf-8?B?cHhqY09LVmEvVWRaVm8vQVdNcEh5ZVAyb0JnTUNxK2h1V3Z2QXRrcmV4MDBL?= =?utf-8?B?ekluU1BxWXFYekVhNlBWK3dWbFNxVjNpMmQ5N2QrdEl2enBLWXcrMXNldWxE?= =?utf-8?B?ckFTWkI5NFlHYkJnbXhJZENhN2l2NnF0Qi9uMWdtM0RBQXViVGpyNndldDdF?= =?utf-8?B?OWVTbkl1OW8yY0xiT1MzVnFRdTFMdU9ocGkxUWRyejY4SzdlM0l6K2V4RSs3?= =?utf-8?B?bVNob3dKellRTStZRXpMRUxDR1IwODhXVklYd2JVRitKWmtTNytDWCtJdVBs?= =?utf-8?B?bmlkZFlZODlNM3RtNThOZWlmelRjVzM1bjcrcWE2KzNjdUY0ZVZNODg0WDh0?= =?utf-8?B?OVlwK3JERXo2c255NlJHUWhnOWZsMVNyMjRwb2h3bFZBcFpHWTFncCtQRnYx?= =?utf-8?B?aEpoYjZwaXdNZ0pOMVhJcVBneDhQbmM0QW01V1RQZTNDUGZZYXlHOCtqYWxB?= =?utf-8?B?OThFQUpjZFJQSmtrNm42TVdvcTNhQlVNK3gwUTcxNm52UHZpS24yVHJJTitF?= =?utf-8?B?dFI1UW1RdlFlSy9DOUg3MWlkdCs2UmMwWUZnTTdBNURoN01rdklnMkdCZy8y?= =?utf-8?B?NHBSc2szYVZIOHNnQXp5NXRwVm9OYUJOdkl1Y3Z3OXdIZDJVKzdyM1R1SGVD?= =?utf-8?B?Qy9SOEk2M0Q1SWFMYWNjM2ZkUGtZc0poWStPMWpWT3B0VEtsSEhXV3NYRStO?= =?utf-8?B?TTFRVTE1emMxUXZGcmRLOXNvMWQyYzBXdjMza00wQ2lXTFZTNkRxL1VTazZw?= =?utf-8?B?anRyMitueThxc25VTXhZOXgvbzlLR1RxN29vMzFtSndxVENGQ3Y4WG9WK2V2?= =?utf-8?B?RkhFdTJqTHpNUGZkVlNISm1yTStjejJDSHEvMEM5MkVVMFZYR0FQSkZUZGk4?= =?utf-8?Q?pScVT2jRlOsE5RjhRi6JjF86W?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: e58b85a0-e3c9-4ff0-9b1e-08db9759f36d X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8790.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Aug 2023 15:21:19.6389 (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: E80O/ODRKrtHB0f7XDdOnNXH4+Ba5RQAk0A7vMJUbq0UPjxKgfT7SKsAUQ3DzbEqdk9qFe8cJjI21K/9w0RLGA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR04MB8014 X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1691421825270100001 Content-Type: text/plain; charset="utf-8" Since the insns here and in particular their memory access patterns follow the usual scheme, I didn't think it was necessary to add a contrived test specifically for them. Signed-off-by: Jan Beulich Reviewed-by: Andrew Cooper --- SDE: -arl, -lnl, or -future --- a/tools/misc/xen-cpuid.c +++ b/tools/misc/xen-cpuid.c @@ -186,7 +186,7 @@ static const char *const str_7d0[32] =3D static const char *const str_7a1[32] =3D { [ 0] =3D "sha512", [ 1] =3D "sm3", - + [ 2] =3D "sm4", [ 4] =3D "avx-vnni", [ 5] =3D "avx512-bf16", =20 [10] =3D "fzrm", [11] =3D "fsrs", --- a/tools/tests/x86_emulator/predicates.c +++ b/tools/tests/x86_emulator/predicates.c @@ -1408,6 +1408,8 @@ static const struct vex { { { 0xd3 }, 2, T, R, pfx_f3, W0, Ln }, /* vpdpwsuds */ { { 0xda }, 2, T, R, pfx_no, W0, L0 }, /* vsm3msg1 */ { { 0xda }, 2, T, R, pfx_66, W0, L0 }, /* vsm3msg2 */ + { { 0xda }, 2, T, R, pfx_f3, W0, Ln }, /* vsm4key4 */ + { { 0xda }, 2, T, R, pfx_f2, W0, Ln }, /* vsm4rnds4 */ { { 0xdb }, 2, T, R, pfx_66, WIG, L0 }, /* vaesimc */ { { 0xdc }, 2, T, R, pfx_66, WIG, Ln }, /* vaesenc */ { { 0xdd }, 2, T, R, pfx_66, WIG, Ln }, /* vaesenclast */ --- a/tools/tests/x86_emulator/x86-emulate.h +++ b/tools/tests/x86_emulator/x86-emulate.h @@ -180,6 +180,7 @@ void wrpkru(unsigned int val); #define cpu_has_avx512_fp16 (cp.feat.avx512_fp16 && xcr0_mask(0xe6)) #define cpu_has_sha512 (cp.feat.sha512 && xcr0_mask(6)) #define cpu_has_sm3 (cp.feat.sm3 && xcr0_mask(6)) +#define cpu_has_sm4 (cp.feat.sm4 && xcr0_mask(6)) #define cpu_has_avx_vnni (cp.feat.avx_vnni && xcr0_mask(6)) #define cpu_has_avx512_bf16 (cp.feat.avx512_bf16 && xcr0_mask(0xe6)) #define cpu_has_avx_ifma (cp.feat.avx_ifma && xcr0_mask(6)) --- a/xen/arch/x86/include/asm/cpufeature.h +++ b/xen/arch/x86/include/asm/cpufeature.h @@ -178,6 +178,7 @@ static inline bool boot_cpu_has(unsigned /* CPUID level 0x00000007:1.eax */ #define cpu_has_sha512 boot_cpu_has(X86_FEATURE_SHA512) #define cpu_has_sm3 boot_cpu_has(X86_FEATURE_SM3) +#define cpu_has_sm4 boot_cpu_has(X86_FEATURE_SM4) #define cpu_has_avx_vnni boot_cpu_has(X86_FEATURE_AVX_VNNI) #define cpu_has_avx512_bf16 boot_cpu_has(X86_FEATURE_AVX512_BF16) #define cpu_has_avx_ifma boot_cpu_has(X86_FEATURE_AVX_IFMA) --- a/xen/arch/x86/x86_emulate/private.h +++ b/xen/arch/x86/x86_emulate/private.h @@ -589,6 +589,7 @@ amd_like(const struct x86_emulate_ctxt * #define vcpu_has_avx512_fp16() (ctxt->cpuid->feat.avx512_fp16) #define vcpu_has_sha512() (ctxt->cpuid->feat.sha512) #define vcpu_has_sm3() (ctxt->cpuid->feat.sm3) +#define vcpu_has_sm4() (ctxt->cpuid->feat.sm4) #define vcpu_has_avx_vnni() (ctxt->cpuid->feat.avx_vnni) #define vcpu_has_avx512_bf16() (ctxt->cpuid->feat.avx512_bf16) #define vcpu_has_wrmsrns() (ctxt->cpuid->feat.wrmsrns) --- a/xen/arch/x86/x86_emulate/x86_emulate.c +++ b/xen/arch/x86/x86_emulate/x86_emulate.c @@ -6896,6 +6896,13 @@ x86_emulate( host_and_vcpu_must_have(sm3); goto simd_0f_ymm; =20 + case X86EMUL_OPC_VEX_F3(0x0f38, 0xda): /* vsm4key4 [xy]mm/mem,[xy]mm,[= xy]mm */ + case X86EMUL_OPC_VEX_F2(0x0f38, 0xda): /* vsm4rnds4 [xy]mm/mem,[xy]mm,= [xy]mm */ + host_and_vcpu_must_have(sm4); + generate_exception_if(vex.w, X86_EXC_UD); + op_bytes =3D 16 << vex.l; + goto simd_0f_ymm; + case X86EMUL_OPC_VEX_66(0x0f38, 0xdc): /* vaesenc {x,y}mm/mem,{x,y}mm= ,{x,y}mm */ case X86EMUL_OPC_VEX_66(0x0f38, 0xdd): /* vaesenclast {x,y}mm/mem,{x,= y}mm,{x,y}mm */ case X86EMUL_OPC_VEX_66(0x0f38, 0xde): /* vaesdec {x,y}mm/mem,{x,y}mm= ,{x,y}mm */ --- a/xen/include/public/arch-x86/cpufeatureset.h +++ b/xen/include/public/arch-x86/cpufeatureset.h @@ -278,6 +278,7 @@ XEN_CPUFEATURE(SSBD, 9*32+31) / /* Intel-defined CPU features, CPUID level 0x00000007:1.eax, word 10 */ XEN_CPUFEATURE(SHA512, 10*32+ 0) /*A SHA512 Instructions */ XEN_CPUFEATURE(SM3, 10*32+ 1) /*A SM3 Instructions */ +XEN_CPUFEATURE(SM4, 10*32+ 2) /*A SM4 Instructions */ XEN_CPUFEATURE(AVX_VNNI, 10*32+ 4) /*A AVX-VNNI Instructions */ XEN_CPUFEATURE(AVX512_BF16, 10*32+ 5) /*A AVX512 BFloat16 Instructions */ XEN_CPUFEATURE(FZRM, 10*32+10) /*A Fast Zero-length REP MOVSB */ --- a/xen/tools/gen-cpuid.py +++ b/xen/tools/gen-cpuid.py @@ -285,7 +285,7 @@ def crunch_numbers(state): # enabled. Certain later extensions, acting on 256-bit vectors of # integers, better depend on AVX2 than AVX. AVX2: [AVX512F, VAES, VPCLMULQDQ, AVX_VNNI, AVX_IFMA, AVX_VNNI_INT= 8, - AVX_VNNI_INT16, SHA512], + AVX_VNNI_INT16, SHA512, SM4], =20 # AVX512F is taken to mean hardware support for 512bit registers # (which in practice depends on the EVEX prefix to encode) as well