From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: 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 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=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 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=+iPru74A7d77BKMqkyx9wbQLOTshTNvWp+6e8mXvooo=; b=4sF0TG8WhAfMbFK8KIK+mPmp+CMVFTPOI6bK304jCNfOuNNYKbB7n7m/O1Dn+pma1XvdIzn41bErW10StWDJAlvPf8qRmo2C1Bxs4XmHGv6SOMAsD/tjFlEvXRSA0xX/zV+QHaXHJGoEzroqeGEty92J1cRdOpfkepV+5Q/yJM/c5ToxkYXsPp/dD+UQCUD0ZuxJ+Pq7RQkR0YbE17lTeGJO5tMLOag6h7/TYKXG8HxtoXJf19D+ZLZ8hDcxLqIgQEk9Ca6D/GXR8WG6LdHhefCxqjlzhlRG7rYfa/1rHLpRpvnZ6UU129Oh4wABHUUk1BriQd3URAfKNqNLU5u8ow== 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 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> 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: 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?B?L1RxZlEwUEZHc3ZTWFNmbTJaaHpySnVkazcxVUVHNGVFM3pMZ2NBZHkvVjNp?= =?utf-8?B?dGdlMXRxQVJBQkVWWmVwTllNM3dLZ0MyWHJTM0JTb0dqenoxQmdRcncwd21v?= =?utf-8?B?K3c5NDNVNDVac1lEQm1XLy9iVGJ3eE9QMisrUjV6dkE1Sk90c3FnaDE0eVBw?= =?utf-8?B?N1Vsakk1KzFOWmk4Y2Y1SEd5V0swbERSTjM3L2JPdWV0SVBDQnl6aWVUb21J?= =?utf-8?B?UHFZSVFXcFFrbzVXMGpmRlA3T0JCRGhmeE9JSEFSZndaWE5BUlhzS1RUYUg1?= =?utf-8?B?K2VrYW1YZCtoRkpQaHd2NHVYSXNJNU05cVdsSHFvaGlVSWdiWmYzbjBXWXR2?= =?utf-8?B?N09PWE5JU0wreVM3YnRGbUxrMVVJYkFHYjdDZ051R00reWdJT3lNKytONEZO?= =?utf-8?B?U3JETVhpU1R2bkpJaDJLei9EWGpZbnBZdElqU2tTbUNsZ0ZsNWlyMnhKWEtx?= =?utf-8?B?TnVVYVhDa2d4WURoOU5ZaHpFbjZFclBIRGNqbVZGdmdJS1ozRlU1amUxQk9Z?= =?utf-8?B?cEN6UndOR3V0UTJwRHRBTXFHbThNNlJNM25FeGlMTXBKNDY5TWFxaEkvUDY0?= =?utf-8?B?cTg3Rkk3dE1nS1piOUhTK3Y1VmNNY2ZXUW9VbDB3M2lzWjI2bjRTcVk5elVY?= =?utf-8?B?K2pVNk5sdDdqZWhIczVRVHZWeFdkYzhKZjduRmVXOXY0a1JCNjFhMXM3R1Z4?= =?utf-8?B?V280Z1lOeDVENWRQT2RrQmI2MXEwamROemRIYVpZcVZJRnNUR0ZHS2pMTkNO?= =?utf-8?B?c0dDSGtzdG1xdzhxMG9COFE4QVpWQlBHSnI2bWxibnVXN1o2aGpWZjdOeXRK?= =?utf-8?B?MjNxdGtuVjlLTXpwamZFQWpVWndRcEdVTy9tWTNuWkdTL0ZqV2JzdFg0Nk1n?= =?utf-8?B?YlAzaDlEdWtFbFRlWEl0Q283eXRoZjJPRHArd0MwK3NkVGhKS3I1alE3c0pU?= =?utf-8?B?YWRBa2EzQ1lRU3BoaGZaUlVSZElibmtjb2h3YnI1VXNhMnJ2akMydE9YbER1?= =?utf-8?B?Y3JOV1ZoUEVzeWZvZFVKaGREUm8vZHJZSkdDWmZTWlgwTVFnMURPVkFMdDlP?= =?utf-8?B?azBxTm5rMjhRTUo0Rm5nZGwySytyUHhhOVlodDFDTlVZS0lQN214UDJsV3RZ?= =?utf-8?B?dTBpYndsdldMWGpHaDd0UHp2QjdOZUhGR2IrZ3FPVVZ4dkZnU0tSaEMrYXkr?= =?utf-8?B?ZkY2bWRndTVmcmk4bGJBclhCNENOUGlVVzlFbktiK0lkM3RrTE16dTRKaVo5?= =?utf-8?B?SC8zT3loWjFjYit1UkVRUm5TWWUzUU9zU24wdzd2QnYrRkdPRk1DSXhjK2s5?= =?utf-8?B?NWluY2lqUWQvdUhTQ2hYV3I1bUxVQ1c3N3hlVUhTT2szaVdoRWpiTDVwWUpL?= =?utf-8?B?N2lWVlcrR2JST2ROTHUvZXI3RmYzLzM1Rjd1dWdyME90V0tvelFWUDc0Tm0v?= =?utf-8?B?QUh0bzU2R2VjWWIxTnRuT0RKMW0xNXlyblN4R1RSZDhMeWovMXNOdUJsN2sx?= =?utf-8?B?UU9xY2M2aG5XcmR1QVFMM1ltZjhtRWJKeVFGbHR5cHEyN21HeHlHM2NIU3Fi?= =?utf-8?B?NGE0cG9zb29vYzBTbEFvRUFPbUloRjBDbWlqZzVzWDI4dFZ4TUhkWVlMR2sr?= =?utf-8?B?by8wR0RuVzA5ZDBsRXhKK3VaYjkvbnR5OVVwWHdOUXB2MVFVN2Nwc0pwUVBR?= =?utf-8?B?dFJub0dXdGM2dmFJTHdLZEJSWjhHbHBLVXJWUE0yazZpaHgxUzdaM3d4d3lm?= =?utf-8?B?NGVXV1gwMDVHNHZ3T3RLei9KdDhkYW5XaE9JNjFpNzBNdU4zN2FqT0V5UlJW?= =?utf-8?B?N1NBQWdvcmM1Mmx2bWtXMiszNTJJR0dGQ2ZZMHU5QVdXQzFrdjludzF0cW9D?= =?utf-8?B?UGRBeTIxeWtWWVhrbkVxRFF5R1MvVnlFNGo2NHFCWGhpdU5JS0JCRkVCbFVL?= =?utf-8?B?S09JU0tIQzdnVDlRT3N0SUNFNXB5UGI0VllsNDBCdzdZRytrajNlampVZWVK?= =?utf-8?B?VGZNN2VBYXA0RERBVnl3eGpEWmRCTDlRTDZvWU9BNmVneTNjbW9SYVhnZ2pK?= =?utf-8?B?aWt6dkVSMytndzh1YWtodGd1TXp5dFlyYThYK2lnclFSSnc2aUJRdWhnSVNH?= =?utf-8?Q?464wJCoXsz38MKQNiq5RTUNRO?= 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 List-Id: 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, {}