From patchwork Fri Feb 10 08:50:25 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 55319 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp836047wrn; Fri, 10 Feb 2023 00:50:43 -0800 (PST) X-Google-Smtp-Source: AK7set+sa6MHoNTdpCZx/kJRRoXlrffkQAyP7YtUHVdO6hMJyaqBm4cFdHYsH0TJS45JJ7SefHFY X-Received: by 2002:a50:8e17:0:b0:4aa:c4bb:d432 with SMTP id 23-20020a508e17000000b004aac4bbd432mr17126817edw.11.1676019043707; Fri, 10 Feb 2023 00:50:43 -0800 (PST) Received: from sourceware.org (server2.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id o16-20020a056402039000b00484e1329439si4860246edv.156.2023.02.10.00.50.43 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Feb 2023 00:50:43 -0800 (PST) Received-SPF: pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 8.43.85.97 as permitted sender) client-ip=8.43.85.97; Authentication-Results: mx.google.com; dkim=pass header.i=@sourceware.org header.s=default header.b=SHpWszTu; arc=fail (signature failed); spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 4D147385417E for ; Fri, 10 Feb 2023 08:50:41 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 4D147385417E DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1676019041; bh=+iPru74A7d77BKMqkyx9wbQLOTshTNvWp+6e8mXvooo=; h=Date:Subject:To:Cc:References:In-Reply-To:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From:Reply-To:From; b=SHpWszTul1oAQbT1MeD1+Q84guUO0UAYrZyP6QR2T+fl7Q073UjFwiO79EUvW/ZsV CFLGlf2G/t2YTeHUxtdMekpnR7zmvVU85ffWMxBbT4YxXIkHHke9SV0XovGctSYK9O Uk/dk5QyRBLl4Ddj4aj5LwGD8zL2aRYHrqcUC2uQ= X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2089.outbound.protection.outlook.com [40.107.21.89]) by sourceware.org (Postfix) with ESMTPS id 99A543858C31 for ; Fri, 10 Feb 2023 08:50:29 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 99A543858C31 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GcTdSiOj4/fb6xEUaViS9PXNf95jOoGmCbLVwvLWVJ2YqcT0E3ZltbcmAlt4/8dLzQXXTXU7dJqmkezVb27VVBfOServgyMzWVo81FvMQNMzFkPkq15Db7bUm5fTNgSYvoFF76ift7UOdIIlNRrD4tLvb8Rl9EKqEpc5pc9rjnxJCvRUMyzykSTinNA73SES8qKfH2N7vqpdIy71kLQEF00hdqiq/rzGDTPYhY5KD7v7tqRBW1d+BPcRkZ92z6R0guSMXVgDIY5ItH89VuM5e361yyfQQI8b+Q4E7ZgWmSmp1n6qqfYc3Eski/ycprKJELZiGld9C5mgAc6CYZm+vQ== 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=+iPru74A7d77BKMqkyx9wbQLOTshTNvWp+6e8mXvooo=; b=oIXmEpln68H5W6Ct2LJtoAh1caO2WMioCi+10OQhngbgfVeAA1ill1e2VIzjdbWun/yvlnpniX5s1/ql2wxGROHwvTr4+YCHWXy5BT0T+BF80PKKsYe8Ihv148QsM0fAtJbD/y3QKCaOW1I3HsiAmt7Y2dB1RmihZ3e1ZHmFSESXMR8OVh2RsVHlWSKyMcknTELSrsQEW2nBLbLqE0Wqb3MDNhSfC7oZyFNBhUCSCUFyLcju0Ib4PeP09V6UBgV4W4yQCMpQVSLSKovOQhNg5NRgCtVZodrp31pIFgcD21ys/7Rk+J74YRI6QXYRD5m5iPdPx2fENaI1WIl55RmL3w== 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 Received: from VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) by DB8PR04MB6889.eurprd04.prod.outlook.com (2603:10a6:10:11d::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6086.19; Fri, 10 Feb 2023 08:50:27 +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:50:27 +0000 Message-ID: <3ab09feb-290d-693d-b43f-237022f3f6aa@suse.com> Date: Fri, 10 Feb 2023 09:50:25 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.7.1 Subject: [PATCH 3/4] x86-64: don't permit LAHF/SAHF with "generic64" Content-Language: en-US To: Binutils Cc: "H.J. Lu" References: <306b5fa2-9007-a4a1-bff5-f013e2c2c26a@suse.com> In-Reply-To: <306b5fa2-9007-a4a1-bff5-f013e2c2c26a@suse.com> X-ClientProxiedBy: FR2P281CA0107.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:9c::10) To VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1PR04MB6560:EE_|DB8PR04MB6889:EE_ X-MS-Office365-Filtering-Correlation-Id: db78f114-c5c8-4613-97e2-08db0b43db03 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: LWBM4GSMVGhxSubmQf/rqzRFCSU16/MS9x1Z86ZHsU0T9Ta/OJGyVjcC/EwbTENFFYAlBsJv78zrJXQX9UZZy22jfdEqq/ffgs/8DRCcbFi+qwwkEn5kawtKElM0MtYlnJd6Hq+IINlZh5O6yBvlIcHqYywLBJCvJbhCNYFBWbl3I/+/IV2CPF3faCkV3xMedGr7PfSx0OK+xh6t6W5+Arp2FwjiQ0TkVqjL1kiWwUVqwrnOm3tyEr5JZxrpQg7OgpH+7Khrtg/YdMYQwJ9MwTPqvNsmlYxCxfLQ69HG0nACz08ZefbsVbzL6Jf02FzRndDw8IhBRHJTs75ua1MZXGZ3VmZoWW1Ihqg4z0JRAn5mGex2m0Y97UDUnGU7jL6fSRthK3zbEsUNALV7lCeipqgbCIiQ8/DwYjxa+DRNvwQ/VIe15wMajRD3l0va864efMilbDzXz0j7nZBPZHn1FtIWwLd4DkK8uoDYBkrFR43LxDxW2SCuALqj8HlBmYgPH2QoCrbD3Ae+GsfN332agkS0tMxquE97c+cI7WY5zZ7HTbzjZbCJDTMDlmSnbmuDu69HoFga0Rm+y3rCuz+6h4CLgfDuHqhL5wEQjno/LkydN6COeHmAHDRMdFFNQpTJz8XyDCf9mzRSLtdjNPbj2vsRxmnpPl/EymxKBzsvotdVAW8HBYmJFW4s5q3ZywrgFAfTZb8KxOsMFHpsJ3qR4O71ROlC6yDuOzn3/WmGHsU= 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)(136003)(39860400002)(346002)(396003)(366004)(451199018)(8936002)(6506007)(5660300002)(38100700002)(83380400001)(316002)(6486002)(2616005)(26005)(36756003)(186003)(41300700001)(66556008)(6512007)(4326008)(8676002)(6916009)(86362001)(66476007)(66946007)(31696002)(478600001)(31686004)(30864003)(2906002)(43740500002)(45980500001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?/TqfQ0PFGsvSXSfm2ZhzrJudk71U?= =?utf-8?q?EG4eE3zLgcAdy/V3itge1tqARABEVZepNYM3wKgC2XrS3BSoGjzz1BgQrw0wmo+w9?= =?utf-8?q?43U45ZsYDBmW//bTbwxOP2++R5zvA5JOtsqgh14yPp7UljI5+1NZi8cf5HGyWK0lD?= =?utf-8?q?RN37/bOuetIPCByzieTomIPqYIQWpQko5W0jfFP7OBBDhfxOIHARfwZXNARXsKTTa?= =?utf-8?q?H5+ekamXd+hFJPhwv4uXIsI5M9qWlHqohiUIgbZf3n0WYtv7OOXNISL+yS7btFmLk?= =?utf-8?q?1UIbAGb7CgNuGM+ygIOyM++N4FNSrDMXiSTvnJIh2Kz/DXjYnpYtIjSkSmClgFl5i?= =?utf-8?q?r2xJXKqNuUaXCkgxYDh9NYhzEn6ErPHDcjmVFvgIKZ3FU5je1BOYpCzRwNGutQ2pD?= =?utf-8?q?tAMqGm8M6RM3nExiLMpJ469MaqhI/P64q87FI7tMgKZb9HS+v5VcMcfWQoUl0w3is?= =?utf-8?q?Z26n4SqY9zUX+jU6Nlt7jehHs5QTvVxWdc8Jf7nFeW9v4kRB61a1s7GVxWo4gYNx5?= =?utf-8?q?D5dPOdkBb61q0jdNzdHaZYqVIFsTGFGKjLNCNsGCHkstmqw8q0oB8Q8AZVBPGJr6m?= =?utf-8?q?lbnuW7Z6hjVf7NytJ23qtknV9KMzpjfEAjUZwQpGUO/mY3nZGS/FjWbstX46MgbP3?= =?utf-8?q?h9DukElTeXItCo7ythf2ODp+wC0+sdThJKr5jQ7sJTadAka3CYQSphhfZRURdIbnk?= =?utf-8?q?cohwbr5Usa2rvjC2tOXlDucrNWVhPEsyfodUJhdDRo/drYJGCZfSZX0MQg1DOVALt?= =?utf-8?q?9Ok0qNnk28QMJ4Fngdl2K+rPxa9Yht1CNUYKIP7mxP2lWtYu0ibwlvWLXjGh7tPzv?= =?utf-8?q?B7NeHFGb+gqOUVxvFgSKRhC+ay+fF6mdgu5fri8lbArXB4CNPiUW9EnKb+Id3tkLM?= =?utf-8?q?zu4JiZ9H/3OyhZ1cb+uREQRnSYe3QOsSn0w7vBv+FGOFMCIxc+k95incijQd/uHSC?= =?utf-8?q?hXWr5mLUCW77xeUHSOk3iWhEjbL5pYJK7iVVW+GbROdNLu/er7Ff3/35F7uugr0Ot?= =?utf-8?q?WKozQVP74Nm/AHto56GecYb1NtnODJ1m15yrnSxGTRd8Lyj/1sNuBl7k1QOqcc6hn?= =?utf-8?q?WrduAQL3Ymf8mEbJyQFltypq27mGxyG3cHSqb4a4posoooc0SlAoEAOmIhF0Cmijg?= =?utf-8?q?5sX28tVxMHdYYLGk+o/0GDnW09d0lExJ+uZb9/nty9UpXwNQpv1QU7cpsJpQPQtRn?= =?utf-8?q?oGWtc6vaILwKdBRZ8GlpKUrVPM2k6ihx1S7Z3wxwyf4eWWX005G4vwOtKz/Jt8dan?= =?utf-8?q?WhOI61i70MuN37ajOEyRRV7SAAgorc52lvmkW2+352IGGFCfY0u9AWWC1kv9nw1tq?= =?utf-8?q?oCPdAy21ykVYXknEqDQyGS/VyE4j64qBXhiuNIKBBFEBlUKKOISKHC7gT9QOstICE?= =?utf-8?q?5pyPb4VYl40Bw7YG+kj3ejjUeeJTfM7eAap4DDAVywxjDZdBL9QL6oYOA6egy3cmo?= =?utf-8?q?RaXggjJikzvER3+gw8uakhtguMzytYra8X+igrQRJw6iBQuhgISG464wJCoXsz38M?= =?utf-8?q?KQNiq5RTUNRO?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: db78f114-c5c8-4613-97e2-08db0b43db03 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:50:26.9467 (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: LfYdNaxAvqGBphWtlrL3ap/F80K4KDQfrmIs65E23vQUUjolop1wAM87hAUqaAqEOlRRmP6EdVPGj/3RmOCTDA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR04MB6889 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 X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Jan Beulich via Binutils From: Jan Beulich Reply-To: Jan Beulich Errors-To: binutils-bounces+ouuuleilei=gmail.com@sourceware.org Sender: "Binutils" X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1757433344872270148?= X-GMAIL-MSGID: =?utf-8?q?1757433344872270148?= The feature isn't universally available on 64-bit CPUs. Note that in i386-gen.c:isa_dependencies[] I'm only adding it to models where I'm certain the functionality exists. For Nocona and Core I'm uncertain in particular. --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -1047,6 +1047,7 @@ static const arch_entry cpu_arch[] = SUBARCH (lwp, LWP, ANY_LWP, false), SUBARCH (movbe, MOVBE, MOVBE, false), SUBARCH (cx16, CX16, CX16, false), + SUBARCH (lahf_sahf, LAHF_SAHF, LAHF_SAHF, false), SUBARCH (ept, EPT, ANY_EPT, false), SUBARCH (lzcnt, LZCNT, LZCNT, false), SUBARCH (popcnt, POPCNT, POPCNT, false), --- a/gas/doc/c-i386.texi +++ b/gas/doc/c-i386.texi @@ -151,6 +151,7 @@ accept various extension mnemonics. For @code{sse4}, @code{avx}, @code{avx2}, +@code{lahf_sahf}, @code{adx}, @code{rdseed}, @code{prfchw}, @@ -1487,7 +1488,7 @@ supported on the CPU specified. The cho @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{.adx} @tab @samp{.rdseed} @tab @samp{.prfchw} +@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} @item @samp{.avx512f} @tab @samp{.avx512cd} @tab @samp{.avx512er} @tab @samp{.avx512pf} --- a/gas/testsuite/gas/i386/i386.exp +++ b/gas/testsuite/gas/i386/i386.exp @@ -934,6 +934,7 @@ if [gas_64_check] then { run_dump_test "x86-64-arch-2-btver2" run_list_test "x86-64-arch-2-1" "-march=generic64 -I${srcdir}/$subdir -al" run_list_test "x86-64-arch-2-2" "-march=generic64+cx16 -I${srcdir}/$subdir -al" + run_list_test "x86-64-arch-2-3" "-march=generic64+lahf_sahf -I${srcdir}/$subdir -aln" run_dump_test "xmmhi64" run_dump_test "x86-64-xsave" run_dump_test "x86-64-xsave-intel" --- a/gas/testsuite/gas/i386/ilp32/x86-64-arch-2.d +++ b/gas/testsuite/gas/i386/ilp32/x86-64-arch-2.d @@ -1,5 +1,5 @@ #source: ../x86-64-arch-2.s -#as: -march=generic64+avx+vmx+smx+xsave+xsaveopt+aes+pclmul+fma+movbe+cx16+ept+clflush+syscall+rdtscp+3dnowa+sse4a+svme+abm+padlock+bmi+tbm +#as: -march=generic64+avx+vmx+smx+xsave+xsaveopt+aes+pclmul+fma+movbe+cx16+lahf_sahf+ept+clflush+syscall+rdtscp+3dnowa+sse4a+svme+abm+padlock+bmi+tbm #objdump: -dw #name: x86-64 (ILP32) arch 2 #dump: ../x86-64-arch-2.d --- a/gas/testsuite/gas/i386/x86-64-arch-2.d +++ b/gas/testsuite/gas/i386/x86-64-arch-2.d @@ -1,4 +1,4 @@ -#as: -march=generic64+avx+vmx+smx+xsave+xsaveopt+aes+pclmul+fma+movbe+cx16+ept+clflush+syscall+rdtscp+3dnowa+sse4a+svme+abm+padlock+bmi+tbm +#as: -march=generic64+avx+vmx+smx+xsave+xsaveopt+aes+pclmul+fma+movbe+cx16+lahf_sahf+ept+clflush+syscall+rdtscp+3dnowa+sse4a+svme+abm+padlock+bmi+tbm #objdump: -dw #name: x86-64 arch 2 @@ -38,4 +38,5 @@ Disassembly of section .text: [ ]*[a-f0-9]+: 0f a7 c0 xstore-rng [ ]*[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]+: 9f lahf #pass --- a/gas/testsuite/gas/i386/x86-64-arch-2.s +++ b/gas/testsuite/gas/i386/x86-64-arch-2.s @@ -62,3 +62,5 @@ xstorerng blsr %ecx,%ebx # TBM blcfill %ecx,%ebx +# LAHF/SAHF +lahf --- a/gas/testsuite/gas/i386/x86-64-arch-2-1.l +++ b/gas/testsuite/gas/i386/x86-64-arch-2-1.l @@ -24,6 +24,7 @@ .*:60: Error: .* .*:62: Error: .* .*:64: Error: .* +.*:66: Error: .* GAS LISTING .* @@ -95,3 +96,5 @@ GAS LISTING .* [ ]*62[ ]+blsr %ecx,%ebx [ ]*63[ ]+\# TBM [ ]*64[ ]+blcfill %ecx,%ebx +[ ]*65[ ]+\# LAHF/SAHF +[ ]*66[ ]+lahf --- a/gas/testsuite/gas/i386/x86-64-arch-2-2.l +++ b/gas/testsuite/gas/i386/x86-64-arch-2-2.l @@ -23,6 +23,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[ ]+\# LAHF/SAHF +[ ]*66[ ]+lahf --- /dev/null +++ b/gas/testsuite/gas/i386/x86-64-arch-2-3.l @@ -0,0 +1,93 @@ +.*: Assembler messages: +.*: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 "x86-64-arch-2\.s" +[ ]*1[ ]+\# Test -march= +[ ]*2[ ]+\.text +[ ]*3[ ]+\# cmov feature * +[ ]*4[ ]+\?\?\?\? 0F44D8 cmove %eax,%ebx +[ ]*5[ ]+\# clflush +[ ]*6[ ]+\?\?\?\? 0FAE38 clflush \(%rax\) +[ ]*7[ ]+\# SYSCALL +[ ]*8[ ]+\?\?\?\? 0F05 syscall +[ ]*9[ ]+\# MMX +[ ]*10[ ]+\?\?\?\? 0FFCDC paddb %mm4,%mm3 +[ ]*11[ ]+\# SSE +[ ]*12[ ]+\?\?\?\? F30F58DC addss %xmm4,%xmm3 +[ ]*13[ ]+\# SSE2 +[ ]*14[ ]+\?\?\?\? F20F58DC 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 \(%rcx\) +[ ]*33[ ]+\# AES +[ ]*34[ ]+aesenc \(%rcx\),%xmm0 +[ ]*35[ ]+\# PCLMUL +[ ]*36[ ]+pclmulqdq \$8,%xmm1,%xmm0 +[ ]*37[ ]+\# AES \+ AVX +[ ]*38[ ]+vaesenc \(%rcx\),%xmm0,%xmm2 +[ ]*39[ ]+\# PCLMUL \+ AVX +[ ]*40[ ]+vpclmulqdq \$8,%xmm4,%xmm6,%xmm2 +[ ]*41[ ]+\# FMA +[ ]*42[ ]+vfmadd132pd %xmm4,%xmm6,%xmm2 +[ ]*43[ ]+\# MOVBE +[ ]*44[ ]+movbe \(%rcx\),%ebx +[ ]*45[ ]+\# CX16 +[ ]*46[ ]+cmpxchg16b \(%rsi\) +[ ]*47[ ]+\# EPT +[ ]*48[ ]+invept \(%rcx\),%rbx +[ ]*49[ ]+\# RDTSCP +[ ]*50[ ]+rdtscp +[ ]*51[ ]+\# 3DNow or PRFCHW +[ ]*52[ ]+prefetchw 0x1000\(,%rsi,2\) +[ ]*53[ ]+\# SSE4a +[ ]*54[ ]+insertq %xmm2,%xmm1 +[ ]*55[ ]+\# SVME +[ ]*56[ ]+vmload +[ ]*57[ ]+\# ABM/LZCNT +[ ]*58[ ]+lzcnt %ecx,%ebx +[ ]*59[ ]+\# PadLock +[ ]*60[ ]+xstorerng +[ ]*61[ ]+\# BMI +[ ]*62[ ]+blsr %ecx,%ebx +[ ]*63[ ]+\# TBM +[ ]*64[ ]+blcfill %ecx,%ebx +[ ]*65[ ]+\# LAHF/SAHF +[ ]*66[ ]+\?\?\?\? 9F lahf --- /dev/null +++ b/gas/testsuite/gas/i386/x86-64-arch-2-3.s @@ -0,0 +1 @@ +.include "x86-64-arch-2.s" --- a/gas/testsuite/gas/i386/x86-64-arch-2-lzcnt.d +++ b/gas/testsuite/gas/i386/x86-64-arch-2-lzcnt.d @@ -1,5 +1,5 @@ #source: x86-64-arch-2.s -#as: -march=generic64+avx+vmx+smx+xsave+xsaveopt+aes+pclmul+fma+movbe+cx16+ept+clflush+syscall+rdtscp+3dnowa+sse4a+svme+lzcnt+padlock+bmi+tbm +#as: -march=generic64+avx+vmx+smx+xsave+xsaveopt+aes+pclmul+fma+movbe+cx16+lahf_sahf+ept+clflush+syscall+rdtscp+3dnowa+sse4a+svme+lzcnt+padlock+bmi+tbm #objdump: -dw #name: x86-64 arch 2 (lzcnt) #dump: x86-64-arch-2.d --- a/gas/testsuite/gas/i386/x86-64-arch-2-prefetchw.d +++ b/gas/testsuite/gas/i386/x86-64-arch-2-prefetchw.d @@ -1,5 +1,5 @@ #source: x86-64-arch-2.s -#as: -march=generic64+avx+vmx+smx+xsave+xsaveopt+aes+pclmul+fma+movbe+cx16+ept+clflush+syscall+rdtscp+sse4a+svme+lzcnt+padlock+bmi+tbm+prfchw +#as: -march=generic64+avx+vmx+smx+xsave+xsaveopt+aes+pclmul+fma+movbe+cx16+lahf_sahf+ept+clflush+syscall+rdtscp+sse4a+svme+lzcnt+padlock+bmi+tbm+prfchw #objdump: -dw #name: x86-64 arch 2 (prefetchw) #dump: x86-64-arch-2.d --- a/opcodes/i386-gen.c +++ b/opcodes/i386-gen.c @@ -67,7 +67,7 @@ static const dependency isa_dependencies { "CORE2", "NOCONA|SSSE3" }, { "COREI7", - "CORE2|SSE4_2|Rdtscp" }, + "CORE2|SSE4_2|Rdtscp|LAHF_SAHF" }, { "K6", "186|286|386|486|586|SYSCALL|387|MMX" }, { "K6_2", @@ -79,7 +79,7 @@ static const dependency isa_dependencies { "AMDFAM10", "K8|FISTTP|SSE4A|ABM" }, { "BDVER1", - "GENERIC64|FISTTP|Rdtscp|CX16|XOP|ABM|LWP|SVME|AES|PCLMUL|PRFCHW" }, + "GENERIC64|FISTTP|Rdtscp|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|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|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|Rdtscp|SSSE3|SSE4A|ABM|PRFCHW|CX16|Clflush|FISTTP|SVME" }, + "GENERIC64|FISTTP|CX16|LAHF_SAHF|Rdtscp|SSSE3|SSE4A|ABM|PRFCHW|Clflush|FISTTP|SVME" }, { "BTVER2", "BTVER1|AVX|BMI|F16C|AES|PCLMUL|Movbe|Xsaveopt|PRFCHW" }, { "286", @@ -313,6 +313,7 @@ static bitfield cpu_flags[] = BITFIELD (LM), BITFIELD (Movbe), BITFIELD (CX16), + BITFIELD (LAHF_SAHF), BITFIELD (EPT), BITFIELD (Rdtscp), BITFIELD (FSGSBase), --- a/opcodes/i386-opc.h +++ b/opcodes/i386-opc.h @@ -137,6 +137,8 @@ enum CpuMovbe, /* CMPXCHG16B instruction support required. */ CpuCX16, + /* LAHF/SAHF instruction support required (in 64-bit mode). */ + CpuLAHF_SAHF, /* EPT Instructions required */ CpuEPT, /* RDTSCP Instruction support required */ @@ -372,6 +374,7 @@ typedef union i386_cpu_flags unsigned int cputbm:1; unsigned int cpumovbe:1; unsigned int cpucx16:1; + unsigned int cpulahf_sahf:1; unsigned int cpuept:1; unsigned int cpurdtscp:1; unsigned int cpufsgsbase:1; --- a/opcodes/i386-opc.tbl +++ b/opcodes/i386-opc.tbl @@ -264,8 +264,10 @@ cld, 0xfc, 0, NoSuf, {} cli, 0xfa, 0, NoSuf, {} clts, 0xf06, i286, NoSuf, {} cmc, 0xf5, 0, NoSuf, {} -lahf, 0x9f, 0, NoSuf, {} -sahf, 0x9e, 0, NoSuf, {} +lahf, 0x9f, No64, NoSuf, {} +lahf, 0x9f, LAHF_SAHF, NoSuf, {} +sahf, 0x9e, No64, NoSuf, {} +sahf, 0x9e, LAHF_SAHF, NoSuf, {} pushf, 0x9c, No64, DefaultSize|No_bSuf|No_sSuf|No_qSuf, {} pushf, 0x9c, x64, DefaultSize|No_bSuf|No_lSuf|No_sSuf|NoRex64, {} popf, 0x9d, No64, DefaultSize|No_bSuf|No_sSuf|No_qSuf, {}