From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-vi1eur04on2048.outbound.protection.outlook.com [40.107.8.48]) by sourceware.org (Postfix) with ESMTPS id 307093858C2D for ; Fri, 10 Feb 2023 08:51:48 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 307093858C2D 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=MbX3XW4nqJE8bnVM/7xIqEJl0W5XQatudPPDTXW644orbKXr5TCP/YnMrtODAZq/tiT7ZM/2izwmyP+TIJgxpPv90pLSC8807IrnbYTPrrQphhL/fpWo+8ti1s2BIwFMmPRHQWzBQqWAJHnj/MdALtxb75S0iHrzKBHkEr5TwPkuAs6Cp759jq1pcxIVtmorC5uQATGXCwPkx2lVTsLiDzeSQeqaEpouAsKWvPtKCAChP8kVGZjknjTZdtjTnCZuJuLVaS5wQGxTcedqPvsGQy7pYt+cprs7RDEv9b9G4zP+UjlHdG5JHQYPLImKGoaif6aRBXBnPoiSVTQXMY1PDg== 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=eR88toDUF9Z5GVi19yo+qRgM01aP3xDAMnLjwUkf7mY=; b=khVRoddDL0aUzJU1BROxeytydtqBm6S/nqy+c7P4fmR4KZuupK0pK6fUehVbRD0/pzFmCS0tdN2FfFomg0eosidy8+DOpi5dEu8YDcmNeyqiIPE2OhnmdDkt03RbfYbiD/CjK5heHDlGcv6yeeRvKX75mJMOy/4exe5MhEUIGyvBTSP8EXn8kuclHNKuz0MJUCI58bsT6Tmkj7dFJb/8WzI3YHxtW3YKYIZn+l+n44jg2f5V8rOU8MJxDHTUKcvBuLf0/AGPrbAFkxp86cC4XZOKfDqaRUaTZGDgPr1Eebh7Og2KLZn5FJtSXqTiEVovAseWPg54KSmLSKrEcdjI7w== 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=eR88toDUF9Z5GVi19yo+qRgM01aP3xDAMnLjwUkf7mY=; b=FB8vTHz5H7dak1eCcUi+R47Edpdz7hiBaNFPxZXZVyhKZKnjjsVghrB3aPJnkHKR/Y+PZ1JDpAULa5H8mPtyxz8y/Mrx0eglDzM+CVd4XFDM1zqo+nStFumI5Pls//9hT70BEuPolnteV1YR/8jy1ybpwSGcJqxerN6LDioGrckGtScbpbpmf2iuYOkjDcwMssfR0lWAtNrwrqDUiVL/Uo3kRLN3ujvl78AgNu6H0fY+NOouddZJd7UJb/MI1kUm8+Bpue8jpuaO1177fI1M7L9808SVA/aKaBPBV8j4WqG8FDgUxzrsnwIrbHcJ/3iAt9UMqdKAhbo14y8wD4hrgQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Received: from VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) by AM9PR04MB8507.eurprd04.prod.outlook.com (2603:10a6:20b:432::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6086.21; Fri, 10 Feb 2023 08:51:45 +0000 Received: from VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::e138:4fc3:705c:d178]) by VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::e138:4fc3:705c:d178%7]) with mapi id 15.20.6086.019; Fri, 10 Feb 2023 08:51:44 +0000 Message-ID: <67715baf-b718-0d00-959a-fc4e70c0dff9@suse.com> Date: Fri, 10 Feb 2023 09:51:42 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.7.1 Subject: [PATCH 4/4] x86: MONITOR/MWAIT are not SSE3 insns Content-Language: en-US To: Binutils Cc: "H.J. Lu" References: <306b5fa2-9007-a4a1-bff5-f013e2c2c26a@suse.com> From: Jan Beulich In-Reply-To: <306b5fa2-9007-a4a1-bff5-f013e2c2c26a@suse.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: FR2P281CA0006.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:a::16) To VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1PR04MB6560:EE_|AM9PR04MB8507:EE_ X-MS-Office365-Filtering-Correlation-Id: bebde7e4-6b2f-4371-74fb-08db0b440947 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: +pkFZXoCfhCpa31nzk94UFVb4SFtL06ho87wZ8makRGxmvXrsFbVUINpZflKPKrUtFWcWHUVkFD2M0bzTL1jXxg7b+EvHn585sK7LKfyaBAlYa1JFEwNLBX2ECqiytg0ET7gv7NmYyER9wOerDKWDSU5WJ9ie0V0omRd+BaY/8ZKwhHQhWCPQGjLRXpzGAIajEpygQohWo+0gStwXf9VcN0qHbwgNOC53Rbv4SVLT1WqGT87TT1oVTgUHxVphmA7NeALCMBuX8hm8w+Y+QZSzHdyz13K+3UvWdTke47HpwEQMQtjAUHua98DT/2/QrNFFAk8ArNEXKOSIEpatX6JK/wpFNLrZI2rlRX3xWfdyp/HUMhsQ1warUUIptsC+zMQoIpK9M1+nG/Qn1IhSx102mLkUuafLTcJLQDwdeHqqYWxCIJ/thLhkTHDJJHigKLYCMGzNmby/akvrOUnMwOT+3mfyC/VNVRp1jlrt+k3j5Zli3KR+KBhH8X0Ci9gg8fk3K/HM83RDWsWPKsx2pKVRpHN+ZVz/YtN2/aLWJaAqVjjWNij9u08/QI3NJ4JtinDw9hEq0KHAC4YeZVoxNWOObI+WE1nUg+tfSCvHIYuLYlMo/GzV6Z7GkLaaK8z9JGbJToH4gNhP5AQh5ZievbJnvvC5Wi/eyO0NoDeXzTzdVZq58tfw4SbYsVfwaFo4n6Kv1m9cdLD4rbq1SpVMRGwtabHmVmGQEiG6bMgrl4fV6A= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VE1PR04MB6560.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230025)(376002)(396003)(136003)(346002)(39860400002)(366004)(451199018)(36756003)(2906002)(6486002)(478600001)(26005)(6506007)(186003)(2616005)(6512007)(83380400001)(6916009)(4326008)(8676002)(41300700001)(66556008)(66476007)(30864003)(66946007)(31696002)(8936002)(5660300002)(38100700002)(316002)(86362001)(31686004)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?bDkrVXFiTGlFVkhVMUdCNzVaQ3o0QlRMYWhhTklDd2F2OGt0b2NaTkVEUVk3?= =?utf-8?B?elhCc1Y0emEweDhCS1JWMzFhUENtQ0NIU2hRUkY5Z3p3S1E4ZUg4RGo1ZUV4?= =?utf-8?B?blIwNTFKZS9XWW45aEoyZk83UlZzc0NuN3BzcUkrUVhvcG1hQnViblJBSWsz?= =?utf-8?B?SXloT09ORE5DT2VaRllsK3d6cU0xZ1VvSmlUZUkwbzR6SUQ0alFQUDdCS2pm?= =?utf-8?B?dXU0bnNlM2xmTFcvN3Fvc1V2bWNyZ1gvVFFPRnNjS2l2bi9td1l5VkNSaHVm?= =?utf-8?B?UDRBUlplMFJmaStja0FuVC95YVk0dVNsT2g3NGN1d3VnQkxUNzhEb2p4WnIw?= =?utf-8?B?eXcvN2NCL1E0emx2QTZOdjhyV2FPZThyTWhyZmRmd2k2MDRrMXpnWEUxUTUz?= =?utf-8?B?bmg1QUVCWFZpcEtMd0tFdEVzdHd3Nkc1S21MRXBUaWdZL1A5eHg4ZmpRTUpE?= =?utf-8?B?Lys1K0NTMHZvWXBkb0tOZnN4eCtua1NSOVRQem4zY2QzODI3T2tST2xvaEty?= =?utf-8?B?TUM3MlhKN2QwV2tLMWVhYWZhZXNrWC9rbXVJUWVjK0NSMGtjbWdyRFgwOERl?= =?utf-8?B?RVZBTWlMSFQwWi9Fa2RtYm1nM0FpMk1VK21MVXRVRlVJY2VsS2hoU1ZnL1FE?= =?utf-8?B?dUR5MnI2eWYzVzQ5MXdtTnZnSHZRdjNzS0ZTZFVFQjhVdUQyTzRybXNib3A5?= =?utf-8?B?M2tSSkxOOE1ReWZuUFJXNi9xR2E0eTBpdTYzZ1ZmOWFJVDhLa0pWNTdRWG1V?= =?utf-8?B?b1NVWmV1Q0RJWllnNEVjaVNkT0Ywa2REOGdxVWJVS2NUZTdKSUp4SHF5V2Zr?= =?utf-8?B?bGN4bHVXUndNbW5mMXFqS0ttc1BUWHhuMktIRTk1d2RKZ3E3a0RwazlZOEw1?= =?utf-8?B?R0FraWphUm9kTG5ud1NVcXpxM0JpRnhNMmNpN2hiWUt6RjdoQURIbllPOWg0?= =?utf-8?B?cWVlejFuSUtZN2E2ZDFHK1VaeEg4RjI0Y3Y1L05WOU5tR3RRYmg5WmhVR1lp?= =?utf-8?B?bWFQeTk0dG1jalg5WXlEY0ZXTzZNRzR1cHUybm5rcXQ5dEpsd3lzYUxzL2Yy?= =?utf-8?B?YnVpdDIxMXF4eXk0R1oxTEhhWWZPQlNSK1g1OSt0eFpWdlgraS9pSHhEc1hD?= =?utf-8?B?OEpFYzdEKzkxTXY1YURCYzcxQUpsSnVMRkRGZ0xEZVU3ZnhYNFB6RFdCRUp6?= =?utf-8?B?OUhZelB4cGxXZk9zS25TbmpTN0puVlB0byttMUZCYjc0MHFpRGJ0dlZxQjc1?= =?utf-8?B?eHR2ZTRaNXA2TjF6anBDVVplRDNlYng1ZVdpbmlsTEhjUXY1aVJpa1RxWVBw?= =?utf-8?B?WVRhOWh2ZVllaWMzWFUzWXBKeEhZb2d6Y2V5cktRaVNCWjdsNzZSbGlvaHQw?= =?utf-8?B?N2h1MStGWTU4UEJ1cmxvd096QlB6STFxdlNUNCtKZDJ4K0JRRmRid3hTNWZS?= =?utf-8?B?UGFFV2RTU0UzeUNiMUlFUjNIWnFYdjZPQnFuTkJWZHUvNFlsZFg3Zy9oU1o4?= =?utf-8?B?U3U3UWQ4TXE2MVZ5OWRhVWtRdHh1V1pnRGlZNmdRTm5iSjZmbmFxemZNU054?= =?utf-8?B?b01DRXl0THM3eWFlTnVOUVlMYVVnYUN5SW1YZWN5TDlVejJyN0VFMEcvTWp1?= =?utf-8?B?TmljS0hVaXRKRmZMZGZCMzErYkNwaEJqQlo3a2ZXUkNFZVN4Y0d2NWNxMFNN?= =?utf-8?B?cVpGQmVNazhZQThXcmt5MnhDZFFYMHJwcXprNnhVVk83VkRKZFFxN1c1Sk14?= =?utf-8?B?aFNDUnBPeEpIM3NXZ0NmLzJZb2NZZG1HSlZ2MGNRUnRqcjI3YjNMcC9wN0VR?= =?utf-8?B?ck9UVG1IVmNXTml5M1lsejNjOTcyZE5VVnhsUjl5OThQVGpLRXhaNzVUeTUw?= =?utf-8?B?NjJYSGFwbjBOLzJ6aWxURmJUdHEzYVkwSjdzbnIrNS9keUU2NmhoZG92SjJN?= =?utf-8?B?czVtZGc3Mm02TFRTV0R6TCtYMHhKbWV4OXZTK2d6andrZTNHZUYxR0ZqOU5p?= =?utf-8?B?Vk5TRC9VWGxoZ2RrR3ZZVng0RDJ1YkdwTmdSdUQrWk1UZGpPSEhYTElWZTdp?= =?utf-8?B?RmxaelFoRFlzeWdYd21LWm5GM2JPVzVBaDRpbkY0OXoyUFI3N1Q1d2dUdmhD?= =?utf-8?Q?vMftSasiSIqQ6oMusUhs0Bu7p?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: bebde7e4-6b2f-4371-74fb-08db0b440947 X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6560.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Feb 2023 08:51:44.6291 (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: 5999uHlFyGbsteQvJBw6xNh/+7KbTCPLuw5EICNtPRMvns+aApdrXOV2i/LPnaavzoW0a9ctvirZgNGxceqGcQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR04MB8507 X-Spam-Status: No, score=-3028.5 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 have their own CPUID bit and hence they should also have their own separate control. --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -1027,6 +1027,7 @@ static const arch_entry cpu_arch[] = SUBARCH (avx512dq, AVX512DQ, ANY_AVX512DQ, false), SUBARCH (avx512bw, AVX512BW, ANY_AVX512BW, false), SUBARCH (avx512vl, AVX512VL, ANY_AVX512VL, false), + SUBARCH (monitor, MONITOR, MONITOR, false), SUBARCH (vmx, VMX, ANY_VMX, false), SUBARCH (vmfunc, VMFUNC, ANY_VMFUNC, false), SUBARCH (smx, SMX, SMX, false), --- a/gas/doc/c-i386.texi +++ b/gas/doc/c-i386.texi @@ -152,6 +152,7 @@ accept various extension mnemonics. For @code{avx}, @code{avx2}, @code{lahf_sahf}, +@code{monitor}, @code{adx}, @code{rdseed}, @code{prfchw}, @@ -1487,7 +1488,7 @@ supported on the CPU specified. The cho @item @samp{.aes} @tab @samp{.pclmul} @tab @samp{.fma} @tab @samp{.fsgsbase} @item @samp{.rdrnd} @tab @samp{.f16c} @tab @samp{.avx2} @tab @samp{.bmi2} @item @samp{.lzcnt} @tab @samp{.popcnt} @tab @samp{.invpcid} @tab @samp{.vmfunc} -@item @samp{.hle} @tab @samp{.rtm} @tab @samp{.tsx} +@item @samp{.monitor} @tab @samp{.hle} @tab @samp{.rtm} @tab @samp{.tsx} @item @samp{.lahf_sahf} @tab @samp{.adx} @tab @samp{.rdseed} @tab @samp{.prfchw} @item @samp{.smap} @tab @samp{.mpx} @tab @samp{.sha} @tab @samp{.prefetchwt1} @item @samp{.clflushopt} @tab @samp{.xsavec} @tab @samp{.xsaves} @tab @samp{.se1} --- a/gas/testsuite/gas/i386/arch-10.d +++ b/gas/testsuite/gas/i386/arch-10.d @@ -1,4 +1,4 @@ -#as: -march=i686+mmx+avx+vmx+smx+xsave+xsaveopt+aes+pclmul+fma+movbe+ept+clflush+nop+syscall+rdtscp+3dnowa+sse4a+svme+abm+padlock+bmi+tbm +#as: -march=i686+mmx+avx+vmx+smx+xsave+xsaveopt+aes+pclmul+fma+movbe+ept+clflush+nop+syscall+monitor+rdtscp+3dnowa+sse4a+svme+abm+padlock+bmi+tbm #objdump: -dw #name: i386 arch 10 @@ -38,4 +38,5 @@ Disassembly of section .text: [ ]*[a-f0-9]+: 0f 1f 00 nopl \(%eax\) [ ]*[a-f0-9]+: c4 e2 60 f3 c9 blsr %ecx,%ebx [ ]*[a-f0-9]+: 8f e9 60 01 c9 blcfill %ecx,%ebx +[ ]*[a-f0-9]+: 0f 01 c8 monitor( .*) #pass --- a/gas/testsuite/gas/i386/arch-10.s +++ b/gas/testsuite/gas/i386/arch-10.s @@ -62,3 +62,5 @@ nopl (%eax) blsr %ecx,%ebx # TBM blcfill %ecx,%ebx +# MONITOR +monitor --- a/gas/testsuite/gas/i386/arch-10-1.l +++ b/gas/testsuite/gas/i386/arch-10-1.l @@ -30,6 +30,7 @@ .*:60: Error: .* .*:62: Error: .* .*:64: Error: .* +.*:66: Error: .* GAS LISTING .* @@ -101,3 +102,5 @@ GAS LISTING .* [ ]*62[ ]+blsr %ecx,%ebx [ ]*63[ ]+\# TBM [ ]*64[ ]+blcfill %ecx,%ebx +[ ]*65[ ]+\# MONITOR +[ ]*66[ ]+monitor --- a/gas/testsuite/gas/i386/arch-10-2.l +++ b/gas/testsuite/gas/i386/arch-10-2.l @@ -29,6 +29,7 @@ .*:60: Error: .* .*:62: Error: .* .*:64: Error: .* +.*:66: Error: .* GAS LISTING .* @@ -100,3 +101,5 @@ GAS LISTING .* [ ]*62[ ]+blsr %ecx,%ebx [ ]*63[ ]+\# TBM [ ]*64[ ]+blcfill %ecx,%ebx +[ ]*65[ ]+\# MONITOR +[ ]*66[ ]+monitor --- a/gas/testsuite/gas/i386/arch-10-3.l +++ b/gas/testsuite/gas/i386/arch-10-3.l @@ -22,6 +22,7 @@ .*:60: Error: .* .*:62: Error: .* .*:64: Error: .* +.*:66: Error: .* GAS LISTING .* @@ -96,3 +97,5 @@ GAS LISTING .* [ ]*62[ ]+blsr %ecx,%ebx [ ]*63[ ]+\# TBM [ ]*64[ ]+blcfill %ecx,%ebx +[ ]*65[ ]+\# MONITOR +[ ]*66[ ]+monitor --- a/gas/testsuite/gas/i386/arch-10-4.l +++ b/gas/testsuite/gas/i386/arch-10-4.l @@ -20,6 +20,7 @@ .*:60: Error: .* .*:62: Error: .* .*:64: Error: .* +.*:66: Error: .* GAS LISTING .* @@ -94,3 +95,5 @@ GAS LISTING .* [ ]*62[ ]+blsr %ecx,%ebx [ ]*63[ ]+\# TBM [ ]*64[ ]+blcfill %ecx,%ebx +[ ]*65[ ]+\# MONITOR +[ ]*66[ ]+monitor --- /dev/null +++ b/gas/testsuite/gas/i386/arch-10-6.l @@ -0,0 +1,99 @@ +.*: Assembler messages: +.*:4: Error: .* +.*:6: Error: .* +.*:8: Error: .* +.*:10: Error: .* +.*:12: Error: .* +.*:14: Error: .* +.*:16: Error: .* +.*:18: Error: .* +.*:20: Error: .* +.*:22: Error: .* +.*:24: Error: .* +.*:26: Error: .* +.*:28: Error: .* +.*:30: Error: .* +.*:32: Error: .* +.*:34: Error: .* +.*:36: Error: .* +.*:38: Error: .* +.*:40: Error: .* +.*:42: Error: .* +.*:44: Error: .* +.*:46: Error: .* +.*:48: Error: .* +.*:50: Error: .* +.*:52: Error: .* +.*:54: Error: .* +.*:56: Error: .* +.*:58: Error: .* +.*:60: Error: .* +.*:62: Error: .* +.*:64: Error: .* +[ ]*1[ ]+\.include "arch-10\.s" +[ ]*1[ ]+\# Test -march= +[ ]*2[ ]+\.text +[ ]*3[ ]+\# cmov feature * +[ ]*4[ ]+cmove %eax,%ebx +[ ]*5[ ]+\# clflush +[ ]*6[ ]+clflush \(%eax\) +[ ]*7[ ]+\# SYSCALL +[ ]*8[ ]+syscall +[ ]*9[ ]+\# MMX +[ ]*10[ ]+paddb %mm4,%mm3 +[ ]*11[ ]+\# SSE +[ ]*12[ ]+addss %xmm4,%xmm3 +[ ]*13[ ]+\# SSE2 +[ ]*14[ ]+addsd %xmm4,%xmm3 +[ ]*15[ ]+\# SSE3 +[ ]*16[ ]+addsubpd %xmm4,%xmm3 +[ ]*17[ ]+\# SSSE3 +[ ]*18[ ]+phaddw %xmm4,%xmm3 +[ ]*19[ ]+\# SSE4\.1 +[ ]*20[ ]+phminposuw %xmm1,%xmm3 +[ ]*21[ ]+\# SSE4\.2 +[ ]*22[ ]+crc32 %ecx,%ebx +[ ]*23[ ]+\# AVX +[ ]*24[ ]+vzeroall +[ ]*25[ ]+\# VMX +[ ]*26[ ]+vmxoff +[ ]*27[ ]+\# SMX +[ ]*28[ ]+getsec +[ ]*29[ ]+\# Xsave +[ ]*30[ ]+xgetbv +[ ]*31[ ]+\# Xsaveopt +[ ]*32[ ]+xsaveopt \(%ecx\) +[ ]*33[ ]+\# AES +[ ]*34[ ]+aesenc \(%ecx\),%xmm0 +[ ]*35[ ]+\# PCLMUL +[ ]*36[ ]+pclmulqdq \$8,%xmm1,%xmm0 +[ ]*37[ ]+\# AES \+ AVX +[ ]*38[ ]+vaesenc \(%ecx\),%xmm0,%xmm2 +[ ]*39[ ]+\# PCLMUL \+ AVX +[ ]*40[ ]+vpclmulqdq \$8,%xmm4,%xmm6,%xmm2 +[ ]*41[ ]+\# FMA +[ ]*42[ ]+vfmadd132pd %xmm4,%xmm6,%xmm2 +[ ]*43[ ]+\# MOVBE +[ ]*44[ ]+movbe \(%ecx\),%ebx +[ ]*45[ ]+\# EPT +[ ]*46[ ]+invept \(%ecx\),%ebx +[ ]*47[ ]+\# RDTSCP +[ ]*48[ ]+rdtscp +[ ]*49[ ]+\# 3DNow or PRFCHW +[ ]*50[ ]+prefetchw 0x1000\(,%esi,2\) +[ ]*51[ ]+\# SSE4a +[ ]*52[ ]+insertq %xmm2,%xmm1 +[ ]*53[ ]+\# SVME +[ ]*54[ ]+vmload +[ ]*55[ ]+\# ABM/LZCNT +[ ]*56[ ]+lzcnt %ecx,%ebx +[ ]*57[ ]+\# PadLock +[ ]*58[ ]+xstorerng +[ ]*59[ ]+\# nop +[ ]*60[ ]+nopl \(%eax\) +[ ]*61[ ]+\# BMI +[ ]*62[ ]+blsr %ecx,%ebx +[ ]*63[ ]+\# TBM +[ ]*64[ ]+blcfill %ecx,%ebx +[ ]*65[ ]+\# MONITOR +[ ]*66[ ]+\?\?\?\? 0F01C8 monitor --- /dev/null +++ b/gas/testsuite/gas/i386/arch-10-6.s @@ -0,0 +1 @@ +.include "arch-10.s" --- a/gas/testsuite/gas/i386/arch-10-lzcnt.d +++ b/gas/testsuite/gas/i386/arch-10-lzcnt.d @@ -1,5 +1,5 @@ #source: arch-10.s -#as: -march=i686+nop+avx+vmx+smx+xsave+xsaveopt+aes+pclmul+fma+movbe+ept+clflush+syscall+rdtscp+3dnowa+sse4a+svme+lzcnt+padlock+bmi+tbm +#as: -march=i686+nop+avx+vmx+smx+xsave+xsaveopt+aes+pclmul+fma+movbe+ept+clflush+syscall+monitor+rdtscp+3dnowa+sse4a+svme+lzcnt+padlock+bmi+tbm #objdump: -dw #name: i386 arch 10 (lzcnt) #dump: arch-10.d --- a/gas/testsuite/gas/i386/arch-10-prefetchw.d +++ b/gas/testsuite/gas/i386/arch-10-prefetchw.d @@ -1,5 +1,5 @@ #source: arch-10.s -#as: -march=i686+mmx+nop+avx+vmx+smx+xsave+xsaveopt+aes+pclmul+fma+movbe+ept+clflush+syscall+rdtscp+sse4a+svme+lzcnt+padlock+bmi+tbm+prfchw +#as: -march=i686+mmx+nop+avx+vmx+smx+xsave+xsaveopt+aes+pclmul+fma+movbe+ept+clflush+syscall+monitor+rdtscp+sse4a+svme+lzcnt+padlock+bmi+tbm+prfchw #objdump: -dw #name: i386 arch 10 (prefetchw) #dump: arch-10.d --- a/gas/testsuite/gas/i386/i386.exp +++ b/gas/testsuite/gas/i386/i386.exp @@ -206,6 +206,7 @@ if [gas_32_check] then { run_list_test "arch-10-3" "-march=i686+mmx+sse4.2 -I${srcdir}/$subdir -al" run_list_test "arch-10-4" "-march=i686+mmx+sse4+vmx+smx -I${srcdir}/$subdir -al" run_list_test "arch-10-5" "-march=generic32+i686 -al" + run_list_test "arch-10-6" "-march=generic32+monitor -I${srcdir}/$subdir -aln" run_dump_test "arch-11" run_dump_test "arch-12" run_dump_test "arch-13" --- a/gas/testsuite/gas/i386/nosse-3.l +++ b/gas/testsuite/gas/i386/nosse-3.l @@ -5,3 +5,4 @@ GAS LISTING .* [ ]*1[ ]+\# Test -march=\+nosse [ ]*2[ ]+\.text [ ]*3[ ]+lfence +[ ]*4[ ]+\?\?\?\? 0F01C8 monitor --- a/gas/testsuite/gas/i386/nosse-3.s +++ b/gas/testsuite/gas/i386/nosse-3.s @@ -1,3 +1,4 @@ # Test -march=+nosse .text lfence + monitor --- a/gas/testsuite/gas/i386/nosse-4.l +++ b/gas/testsuite/gas/i386/nosse-4.l @@ -2,6 +2,7 @@ .*:6: Error: .*generic.* .*:9: Error: .*\.sse.* .*:12: Error: .*\.sse2.* +.*:14: Error: .*\.sse3.* .*:15: Error: .*\.sse3.* .*:18: Error: .*\.ssse3.* .*:21: Error: .*\.sse4\.1.* @@ -9,10 +10,9 @@ .*:32: Error: .*\.nosse4\.2.* .*:35: Error: .*\.nosse4\.1.* .*:38: Error: .*\.nossse3.* -.*:43: Error: .*\.nosse3.* -.*:45: Error: .*\.nommx.* -.*:47: Error: .*\.nosse2.* -.*:50: Error: .*\.nosse.* +.*:43: Error: .*\.nommx.* +.*:45: Error: .*\.nosse2.* +.*:48: Error: .*\.nosse.* GAS LISTING .* #... [ ]*1[ ]+\# Test \.arch \[\.sseX|\.nosseX\] @@ -28,7 +28,7 @@ GAS LISTING .* [ ]*11[ ]+\?\?\?\? 0FAEE8 lfence [ ]*12[ ]+mwait [ ]*13[ ]+\.arch \.sse3 -[ ]*14[ ]+\?\?\?\? 0F01C9 mwait +[ ]*14[ ]+mwait [ ]*15[ ]+pabsd %xmm0, %xmm0 [ ]*16[ ]+\.arch \.ssse3 [ ]*17[ ]+\?\?\?\? 660F381E pabsd %xmm0, %xmm0 @@ -60,21 +60,15 @@ GAS LISTING .* [ ]*36[ ]+C0 [ ]*37[ ]+\.arch \.nossse3 [ ]*38[ ]+pabsd %xmm0, %xmm0 -[ ]*39[ ]+\?\?\?\? 0F01C9 mwait -[ ]*40[ ]+\?\?\?\? 0F77 emms -[ ]*41[ ]+\.arch \.nommx -[ ]*42[ ]+\.arch \.nosse3 -[ ]*43[ ]+mwait -[ ]*44[ ]+\?\?\?\? 0FAEE8 lfence -[ ]*45[ ]+emms -[ ]*46[ ]+\.arch \.nosse2 -[ ]*47[ ]+lfence -[ ]*48[ ]+\?\?\?\? 0F58C0 addps %xmm0, %xmm0 -[ ]*49[ ]+\.arch \.nosse -[ ]*50[ ]+addps %xmm0, %xmm0 - GAS LISTING .* - - -[ ]*51[ ]+\?\?\?\? 8DB42600 \.p2align 4 -[ ]*51[ ]+000000 +[ ]*39[ ]+\?\?\?\? 0F77 emms +[ ]*40[ ]+\.arch \.nommx +[ ]*41[ ]+\.arch \.nosse3 +[ ]*42[ ]+\?\?\?\? 0FAEE8 lfence +[ ]*43[ ]+emms +[ ]*44[ ]+\.arch \.nosse2 +[ ]*45[ ]+lfence +[ ]*46[ ]+\?\?\?\? 0F58C0 addps %xmm0, %xmm0 +[ ]*47[ ]+\.arch \.nosse +[ ]*48[ ]+addps %xmm0, %xmm0 +[ ]*49[ ]+\?\?\?\? .* \.p2align 4 #pass --- a/gas/testsuite/gas/i386/nosse-4.s +++ b/gas/testsuite/gas/i386/nosse-4.s @@ -36,11 +36,9 @@ pabsd %xmm0, %xmm0 .arch .nossse3 pabsd %xmm0, %xmm0 - mwait emms .arch .nommx .arch .nosse3 - mwait lfence emms .arch .nosse2 --- a/opcodes/i386-gen.c +++ b/opcodes/i386-gen.c @@ -61,9 +61,9 @@ static const dependency isa_dependencies { "P4", "P3|Clflush|SSE2" }, { "NOCONA", - "GENERIC64|FISTTP|SSE3|CX16" }, + "GENERIC64|FISTTP|SSE3|MONITOR|CX16" }, { "CORE", - "P4|FISTTP|SSE3|CX16" }, + "P4|FISTTP|SSE3|MONITOR|CX16" }, { "CORE2", "NOCONA|SSSE3" }, { "COREI7", @@ -77,9 +77,9 @@ static const dependency isa_dependencies { "K8", "ATHLON|Rdtscp|SSE2|LM" }, { "AMDFAM10", - "K8|FISTTP|SSE4A|ABM" }, + "K8|FISTTP|SSE4A|ABM|MONITOR" }, { "BDVER1", - "GENERIC64|FISTTP|Rdtscp|CX16|LAHF_SAHF|XOP|ABM|LWP|SVME|AES|PCLMUL|PRFCHW" }, + "GENERIC64|FISTTP|Rdtscp|MONITOR|CX16|LAHF_SAHF|XOP|ABM|LWP|SVME|AES|PCLMUL|PRFCHW" }, { "BDVER2", "BDVER1|FMA|BMI|TBM|F16C" }, { "BDVER3", @@ -87,7 +87,7 @@ static const dependency isa_dependencies { "BDVER4", "BDVER3|AVX2|Movbe|BMI2|RdRnd|MWAITX" }, { "ZNVER1", - "GENERIC64|FISTTP|Rdtscp|CX16|LAHF_SAHF|AVX2|SSE4A|ABM|SVME|AES|PCLMUL|PRFCHW|FMA|BMI|F16C|Xsaveopt|FSGSBase|Movbe|BMI2|RdRnd|ADX|RdSeed|SMAP|SHA|XSAVEC|XSAVES|ClflushOpt|CLZERO|MWAITX" }, + "GENERIC64|FISTTP|Rdtscp|MONITOR|CX16|LAHF_SAHF|AVX2|SSE4A|ABM|SVME|AES|PCLMUL|PRFCHW|FMA|BMI|F16C|Xsaveopt|FSGSBase|Movbe|BMI2|RdRnd|ADX|RdSeed|SMAP|SHA|XSAVEC|XSAVES|ClflushOpt|CLZERO|MWAITX" }, { "ZNVER2", "ZNVER1|CLWB|RDPID|RDPRU|MCOMMIT|WBNOINVD" }, { "ZNVER3", @@ -95,7 +95,7 @@ static const dependency isa_dependencies { "ZNVER4", "ZNVER3|AVX512F|AVX512DQ|AVX512IFMA|AVX512CD|AVX512BW|AVX512VL|AVX512_BF16|AVX512VBMI|AVX512_VBMI2|AVX512_VNNI|AVX512_BITALG|AVX512_VPOPCNTDQ|GFNI|RMPQUERY" }, { "BTVER1", - "GENERIC64|FISTTP|CX16|LAHF_SAHF|Rdtscp|SSSE3|SSE4A|ABM|PRFCHW|Clflush|FISTTP|SVME" }, + "GENERIC64|FISTTP|MONITOR|CX16|LAHF_SAHF|Rdtscp|SSSE3|SSE4A|ABM|PRFCHW|Clflush|FISTTP|SVME" }, { "BTVER2", "BTVER1|AVX|BMI|F16C|AES|PCLMUL|Movbe|Xsaveopt|PRFCHW" }, { "286", @@ -322,6 +322,7 @@ static bitfield cpu_flags[] = BITFIELD (BMI2), BITFIELD (LZCNT), BITFIELD (POPCNT), + BITFIELD (MONITOR), BITFIELD (HLE), BITFIELD (RTM), BITFIELD (INVPCID), --- a/opcodes/i386-opc.h +++ b/opcodes/i386-opc.h @@ -88,6 +88,8 @@ enum CpuLZCNT, /* POPCNT support required */ CpuPOPCNT, + /* MONITOR support required */ + CpuMONITOR, /* SSE4.1 support required */ CpuSSE4_1, /* SSE4.2 support required */ @@ -350,6 +352,7 @@ typedef union i386_cpu_flags unsigned int cpusse4a:1; unsigned int cpulzcnt:1; unsigned int cpupopcnt:1; + unsigned int cpumonitor:1; unsigned int cpusse4_1:1; unsigned int cpusse4_2:1; unsigned int cpuavx:1; --- a/opcodes/i386-opc.tbl +++ b/opcodes/i386-opc.tbl @@ -1270,17 +1270,17 @@ cmpxchg16b, 0xfc7/1, CX16|x64, Modrm|NoS // MONITOR instructions. -monitor, 0xf01c8, SSE3, NoSuf, {} +monitor, 0xf01c8, MONITOR, NoSuf, {} // monitor is very special. CX and DX are always 32 bits. The // address size override prefix can be used to overrride the AX size in // all modes. -monitor, 0xf01c8, SSE3, AddrPrefixOpReg|NoSuf, { Acc|Word|Dword|Qword, RegC|Dword, RegD|Dword } +monitor, 0xf01c8, MONITOR, AddrPrefixOpReg|NoSuf, { Acc|Word|Dword|Qword, RegC|Dword, RegD|Dword } // The 64-bit form exists only for compatibility with older gas. -monitor, 0xf01c8, SSE3|x64, AddrPrefixOpReg|NoSuf, { Acc|Dword|Qword, RegC|Qword, RegD|Qword } -mwait, 0xf01c9, SSE3, NoSuf, {} +monitor, 0xf01c8, MONITOR|x64, AddrPrefixOpReg|NoSuf, { Acc|Dword|Qword, RegC|Qword, RegD|Qword } +mwait, 0xf01c9, MONITOR, NoSuf, {} // mwait is very special. AX and CX are always 32 bits. // The 64-bit form exists only for compatibility with older gas. -mwait, 0xf01c9, SSE3, CheckOperandSize|IgnoreSize|NoSuf|NoRex64, { Acc|Dword|Qword, RegC|Dword|Qword } +mwait, 0xf01c9, MONITOR, CheckOperandSize|IgnoreSize|NoSuf|NoRex64, { Acc|Dword|Qword, RegC|Dword|Qword } // VMX instructions.