From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR02-VE1-obe.outbound.protection.outlook.com (mail-eopbgr20045.outbound.protection.outlook.com [40.107.2.45]) by sourceware.org (Postfix) with ESMTPS id 563473857C46 for ; Fri, 26 Aug 2022 10:32:56 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 563473857C46 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=L1SXQ0Bdf25iU+W4I7U9uM4WRca7aPSwOqVs3Til3hEbLjy8HhuBrTFwcPvcMcfcYo+fZs0obTC26ayovdSVgM4ozESTFRf/LEVbfNa7w80U6O/aRJi3cMZDPWs8TCDWjPorez4Qjp4kfou+4R68B6dvl3YWmjS1f/S8fSmD1IhjMFRHMt5yCCfwAsIGetlwBHwkl9g/PtlqzejNgJp1MzHcrbd2wKeqFUxz7MWuEeq+1P0wC74zrRW4XUJon9L5gwDKUFsjQ8XpHfSBN+W39y0XOLIe/mDeEIs54Mau/TWUPrL/PGaiQY2b36jHQo0dliHWRAIo8jkhFCgj6zC5YQ== 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=Nty3iM4aLtsiCu29rfqNA5Xktz+mEPTvRnb+Di3pTQk=; b=BtUfoqawZEv01dz+zPFabDXtJCi8cXDtgRJanR4UKow9J2Ll0kcrOFJAqVaLuCYDxOnl9D/himp8BISw+R7wunjtOFuqWGGk5vC52krqf66tEOt9V6/Z3jI53xfcqfTt9hAhVt+ETYSUIhwTMfBXWLO5H9v1eywFFq2hACgtrTU+NcxgRzYbLwulhB2OAmMoa9Sogm4bHRiawEml85RPZLLLffdxGzcJWlxcdFB+gSMNMvvrT+VarUQDyPeTPCGEh5NwlQieV7L/leE0ncA+Cuf+xqiblBiYTqMjyVfXk1YUDV/W9x+NH5Avl0kO/so5UIMS3VHP9WFdKaP1uDqhHw== 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=Nty3iM4aLtsiCu29rfqNA5Xktz+mEPTvRnb+Di3pTQk=; b=U/E7OPlK2V3kI+MifosL9sd8GP1PwsRbYIbVQ8xcGKrVQRj/VX6mWpKh00vn1h6rmenpA99nqlTlOCredtV0EPP+6EAIWr9KESwFurl3W7rOvRiNomDMQVpCWdo9GPE3wGRAQdYyK3Q4fTgYSAoSvqZTEVwm1s9ppCk+TNZGyAZGJQlSZV9AR3GcSFP6J7gJFqBoFowaEtSU+T4qzrV2I9HeYA9jCRmskb2mA1gbESlxgc13ddCmZ3Bq+VGwCMXOI7kjiTHZZqP/G+qdQy86k5I3QqCnOJfTHh2lCfuCSZhIIgXvILa5VQWb8xjQWspsFa72dkQBexT/YOlrIxAc6A== 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 AM8PR04MB7473.eurprd04.prod.outlook.com (2603:10a6:20b:1d0::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5566.15; Fri, 26 Aug 2022 10:32:54 +0000 Received: from VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::2d5d:bae0:430f:70ad]) by VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::2d5d:bae0:430f:70ad%4]) with mapi id 15.20.5566.015; Fri, 26 Aug 2022 10:32:53 +0000 Message-ID: <2235c0d8-1467-fcbd-a66a-f6aeb5fd7fa4@suse.com> Date: Fri, 26 Aug 2022 12:32:51 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.13.0 Subject: [PATCH v2 5/7] ix86: don't recognize/derive Q suffix in the common case Content-Language: en-US To: Binutils References: <4a27fbde-d2b2-e293-d09e-9709bc5b9792@suse.com> Cc: "H.J. Lu" From: Jan Beulich In-Reply-To: <4a27fbde-d2b2-e293-d09e-9709bc5b9792@suse.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: AS9PR07CA0033.eurprd07.prod.outlook.com (2603:10a6:20b:46b::19) To VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 9b6c1618-cd91-443e-14d0-08da874e5586 X-MS-TrafficTypeDiagnostic: AM8PR04MB7473:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ByNbjYdbozzbw8y1y8TQIZmwvpaS1IRkBJjjT+g+xrHOCsDXFvgesogcp0ckmsUFKIa6LBqE60Q+8BuT9NN9eoPqN98yRJb93/FMTrlCxSG8CZ4hHUuNwWJs/hAOm+taT+ZfuUu2MvjUMpSJPRggpAaCxSBha5dPqRBKDx79y8hd7uwAszgfVRIxAQLuhfCGyDehl7O7qGGrokrZinYOG0f1ml0U2d+SKI4MDay4zdue/6QgfW30cumVUZDbIPcjtunA9xumkcxPQBo3MtS4R8Gx/YwC+aN1/bYWjuYlLRencwuo9lNao+dR8CPjNzxwcQWADxBlM1rjD8sawuVj+nlgAOxClZ6pBe4VtQGV1KAtpqOCdrWVNJcd7dOlDtK6xv9aR+gbN9Ilt2aloOOhrUqJ4y76ecH+XeZMzcWWLIxLCts2osh64P2joTZpwRYq/lgWbTFDiI3SuMqs4dpoV3q/17wMi8yL5fmuIkieETuxs95NiGD65I0FmrwkVT9wfkWhXGNqtfZnoC8oCq53dh0PqjrcrXpc92J7dVUeP1l9j0H7aJMfOePl6RzOKvFfqa1+uO2rzn+yXg+XA2QlO7XCCVEhogRUZjwH1pWiXKZxzzzci250wUXFbqBhy92OdmVtbiYVU4XR6fglDtzhCDN+ixurUqqaKw3pG7GNo8iLkH7CKayl1q+3VMhPCFJ9C04IS757vJh0iTM4jZnKY8pAIb5NJNao+J4T4x9E4hpgEzb3kFzhWbYFjGt5cHlBbAiM8VmhPH6rnRLeumv6KJTbyLCcWZXBxcs4Nm8Vg3U= 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:(13230016)(346002)(39860400002)(376002)(136003)(396003)(366004)(83380400001)(6486002)(41300700001)(66946007)(2616005)(4326008)(66476007)(36756003)(186003)(66556008)(31686004)(8676002)(6512007)(31696002)(38100700002)(26005)(86362001)(30864003)(5660300002)(6916009)(2906002)(8936002)(478600001)(316002)(6506007)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?b29OcGt5a3djSVlEKzIyTUQ4ZzFCbWZReGJDTVA3TWdtMzhJL2ZRZUwzN2Fa?= =?utf-8?B?TnhIOXpMamMzMDlTODNXQWlMMTh3WWhqS0dRL2VQdVEwWWdORis5bitULzBi?= =?utf-8?B?elVyN3JzZHdaNGxYZnRYT3k0ZEc3UnlReHBGa0xkMXVycUdNQ2lYRUtmVEZP?= =?utf-8?B?YVVGdGhtWDNjdVljRHB4QmZ5dnQvNkpqc21RSHYvckFJTmkrQjhkcVg4dHhF?= =?utf-8?B?eGZRajVzR2RScHhtcHViRUxLZ1NFZHBneE1tQnZUQWw0dEpnUHIvcHpyMnpE?= =?utf-8?B?SnprdlcyTENwamhaUDJDSVVTMVJSS2dPbGd3cmpMenlHWFpPNTY3YWNEN3Bz?= =?utf-8?B?VHBic2hFekZ5cTY4eFRtOFBQbStOYUJudEZRTmdBeVFtYlpjaExuTkFLdjZ2?= =?utf-8?B?blVMaExNOUQ5SXJrNXE1MGNkUGJjcm1STzMzK0lBRitFQlc5d3hiTGpxMHRW?= =?utf-8?B?WXN1TWRJcFQ5aFpoVGRSaUVpcitDd1JNbFQ2c0dOVStOTG1TM3dZMG12d2tW?= =?utf-8?B?WkQvSC9sS2VLSmNueDg1MlN6bHlibXZQQm5JaHEvOXdOWVNKSlZWT2pLUVFq?= =?utf-8?B?SXRKUnV1Q1lrQzd5UWxkOHU3TVdzT0Q0WTAzT1d4RC9MRWRac1YyRUZXU3RC?= =?utf-8?B?RVFlNmZLcDRib3hWaC94ZE5NbnlmcUtPcDlhYUxaN1FKOXNxQUE4NXRuNk10?= =?utf-8?B?aFRnQmdJZk9xYzdGeDlpalJzdzVrVDA2UzVBOHZ1bGhGVEdQd2hzcE1JS2ZW?= =?utf-8?B?YldqaVkvWSt4TEFEUmVtbVU0a3YrblA2ZzRCODBwNkN3WVNvRWJSVEIzQWdK?= =?utf-8?B?OXBXVmMzS3FJK0h2NWU3S0cyVDhZaVZkS1ZtR2tpRkRRWkxFUysrc2VTMkpa?= =?utf-8?B?SjQ5Q0JqK1Q1N3A1a2Q0dGd6LzBRSnlTczJWV2tTN3ZmSnlwTVdjRnBCTVZP?= =?utf-8?B?enpDMmlhUEI2YnpLdVNwY0xNamFBSEpKYkV5QUtWMHR2UEY5WG5oOHREQ2lz?= =?utf-8?B?VjRBMkVaUVpoUmRleUtGc2s1UHlaTFhCTGhDWDJsOGd3bDNiVVdqaEp2SGRI?= =?utf-8?B?cG1GR1I2UzRlcGdjWTBNOTl6MUs4OW1pRldOZFBoc3JQbUM0MDlNTWFLb1Zp?= =?utf-8?B?STVRaHN5d2NKM3Qza2VrMmdQbVp2aXlEUm4rUW0rT25LYUFwOGpLN2ZxWlAw?= =?utf-8?B?bGFqWWRrVnVYTG1Cb0FKQlBkNXloTkg4MFc5ZUxsLy91cWVKZU56dE5MTXZ1?= =?utf-8?B?aDd5bGRJSTdaZ3hsV21SYU9DMGJOcWZVY1l0ZjZVa25FWTJEbUVqVktlVTVE?= =?utf-8?B?d2lzMkJWNXlQS0djYmNBV2Y4L2VSbExORGFUa2d1YU1QZlZzSmNZcEtWclNh?= =?utf-8?B?ODRJTzRoM0ROSzJVUlFkUi9Hck5RbjgwZmJpSmFabUw5R1VvaUdvYUU3RWNy?= =?utf-8?B?Y3ZnUUp4Smc5bzNaaW1TeTRJeVp2SFJrOGtxbHZpT0JvRlM4c1VvdUlxYWg0?= =?utf-8?B?M3orMmpHYm5KL0kzbUErVnNuMFJhaGVoKzRhSnFoS09PT2RsaWl3aUwvRE1C?= =?utf-8?B?bEVtbnQ1RlJVSy96V0FSRjVkMGxuYU4wVGh2bHZhQXNxK2lhK0NHdlpkOHc1?= =?utf-8?B?ZjVJK0d6MVJGVmRtaVNYVjQ0RjVGU2RkOVA4Q2M5NEtyTmNsVHZmYnBNYWwy?= =?utf-8?B?VXNGY3lZSUZhbEZRN1lzZFQ3TzV1dEVKd2ZNYVdiOWppVjF6eFhQMFdFTkx0?= =?utf-8?B?UWtTSUlZblpNbERsZWdYMnpCeUpidTV6aDd4Rk5PTlMreWptZzdvdjJBZ1ox?= =?utf-8?B?K0Y4dnlJMVZzUVphbTlXVHlvdkh1T21FQWZJZEMyQlUzODFWRmVObWU3NWVn?= =?utf-8?B?Y0FUbkFtVWszenErZWlmQ2c3c0ZEWDJ0UzJoQ3ZUTEtpZHUva3F1T3dGVlZQ?= =?utf-8?B?aWMxUExDeVRFbmwwVld1VkJYU1NNTDQ1RXVBemhvbGhBeXN6WFE2cEJuVUxm?= =?utf-8?B?MWpiemRIMGNrY1p1Rkc5RXVaWnQwSFRyTzRCTzgydmNXMVR0VUdZMk9jR1d1?= =?utf-8?B?NUNadm55UlAvcDFVdGtYVEc2di8rcnNMcDcxT05TeHE4a015aVJHaWR2YUJK?= =?utf-8?Q?qvqfQStrg1jbbpNccOZ/1TW64?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9b6c1618-cd91-443e-14d0-08da874e5586 X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6560.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Aug 2022 10:32:53.9489 (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: 09LY2QduJTq/3Kp3QeRPiIx13CpoqwViVEgroWNeQBjcRQBEvh7oYIaeS2+ZXUP8XhxSO03Hc7xCqnMarEweBQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM8PR04MB7473 X-Spam-Status: No, score=-3030.1 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,T_SCC_BODY_TEXT_LINE 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: Have its use, except where actually legitimate, result in the same "only supported in 64-bit mode" diagnostic as emitted for other 64-bit only insns. Also suppress deriving of the suffix in Intel mode except in the legitimate cases. This in exchange allows dropping the respective code from match_template(). Oddly enough despite gcc's preference towards FILDQ and FIST{,T}Q we had no testcase whatsoever for these. Therefore such tests are being added. Note that the removed line in the x86-64-lfence-load testcase was redundant with the exact same one a few lines up. --- With gcc's preference towards FILDQ / FIST{,T}Q I wonder whether the disassembler wouldn't better emit a Q suffix instead of the LL one. --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -4826,7 +4826,7 @@ void md_assemble (char *line) { unsigned int j; - char mnemonic[MAX_MNEM_SIZE], mnem_suffix, *copy; + char mnemonic[MAX_MNEM_SIZE], mnem_suffix = 0, *copy; const char *pass1_mnem = NULL; enum i386_error pass1_err = 0; const insn_template *t; @@ -4860,6 +4860,7 @@ md_assemble (char *line) goto no_match; /* No point in trying a 2nd pass - it'll only find the same suffix again. */ + mnem_suffix = i.suffix; goto match_error; } free (copy); @@ -5010,9 +5011,15 @@ md_assemble (char *line) cpu_sub_arch_name ? cpu_sub_arch_name : ""); return; case unsupported_64bit: - as_bad (_("`%s' is %s supported in 64-bit mode"), - pass1_mnem ? pass1_mnem : current_templates->start->name, - flag_code == CODE_64BIT ? _("not") : _("only")); + if (ISLOWER (mnem_suffix)) + as_bad (_("`%s%c' is %s supported in 64-bit mode"), + pass1_mnem ? pass1_mnem : current_templates->start->name, + mnem_suffix, + flag_code == CODE_64BIT ? _("not") : _("only")); + else + as_bad (_("`%s' is %s supported in 64-bit mode"), + pass1_mnem ? pass1_mnem : current_templates->start->name, + flag_code == CODE_64BIT ? _("not") : _("only")); return; case invalid_sib_address: err_msg = _("invalid SIB address"); @@ -5355,6 +5362,23 @@ md_assemble (char *line) last_insn.kind = last_insn_other; } +/* The Q suffix is generally valid only in 64-bit mode, with very few + exceptions: fild, fistp, fisttp, and cmpxchg8b. Note that for fild + and fisttp only one of their two templates is matched below: That's + sufficient since other relevant attributes are the same between both + respective templates. */ +static INLINE bool q_suffix_allowed(const insn_template *t) +{ + return flag_code == CODE_64BIT + || (t->opcode_modifier.opcodespace == SPACE_BASE + && t->base_opcode == 0xdf + && (t->extension_opcode & 1)) /* fild / fistp / fisttp */ + || (t->opcode_modifier.opcodespace == SPACE_0F + && t->base_opcode == 0xc7 + && t->opcode_modifier.opcodeprefix == PREFIX_NONE + && t->extension_opcode == 1) /* cmpxchg8b */; +} + static char * parse_insn (char *line, char *mnemonic) { @@ -5626,6 +5650,10 @@ parse_insn (char *line, char *mnemonic) for (t = current_templates->start; t < current_templates->end; ++t) { supported |= cpu_flags_match (t); + + if (i.suffix == QWORD_MNEM_SUFFIX && !q_suffix_allowed (t)) + supported &= ~CPU_FLAGS_64BIT_MATCH; + if (supported == CPU_FLAGS_PERFECT_MATCH) return l; } @@ -6661,20 +6689,12 @@ match_template (char mnem_suffix) for (j = 0; j < MAX_OPERANDS; j++) operand_types[j] = t->operand_types[j]; - /* In general, don't allow - - 64-bit operands outside of 64-bit mode, - - 32-bit operands on pre-386. */ + /* In general, don't allow 32-bit operands on pre-386. */ specific_error = progress (mnem_suffix ? invalid_instruction_suffix : operand_size_mismatch); j = i.imm_operands + (t->operands > i.imm_operands + 1); - if (((i.suffix == QWORD_MNEM_SUFFIX - && flag_code != CODE_64BIT - && !(t->opcode_modifier.opcodespace == SPACE_0F - && t->base_opcode == 0xc7 - && t->opcode_modifier.opcodeprefix == PREFIX_NONE - && t->extension_opcode == 1) /* cmpxchg8b */) - || (i.suffix == LONG_MNEM_SUFFIX - && !cpu_arch_flags.bitfield.cpui386)) + if (i.suffix == LONG_MNEM_SUFFIX + && !cpu_arch_flags.bitfield.cpui386 && (intel_syntax ? (t->opcode_modifier.mnemonicsize != IGNORESIZE && !intel_float_operand (t->name)) --- a/gas/config/tc-i386-intel.c +++ b/gas/config/tc-i386-intel.c @@ -824,7 +824,7 @@ i386_intel_operand (char *operand_string continue; break; case QWORD_MNEM_SUFFIX: - if (t->opcode_modifier.no_qsuf) + if (t->opcode_modifier.no_qsuf || !q_suffix_allowed (t)) continue; break; case SHORT_MNEM_SUFFIX: --- a/gas/testsuite/gas/i386/opcode.d +++ b/gas/testsuite/gas/i386/opcode.d @@ -592,6 +592,10 @@ Disassembly of section .text: [ ]*[a-f0-9]+: 0f 4b 90 90 90 90 90 cmovnp -0x6f6f6f70\(%eax\),%edx [ ]*[a-f0-9]+: 66 0f 4a 90 90 90 90 90 cmovp -0x6f6f6f70\(%eax\),%dx [ ]*[a-f0-9]+: 66 0f 4b 90 90 90 90 90 cmovnp -0x6f6f6f70\(%eax\),%dx +[ ]*[a-f0-9]+: df 28 fildll \(%eax\) +[ ]*[a-f0-9]+: df 28 fildll \(%eax\) +[ ]*[a-f0-9]+: df 38 fistpll \(%eax\) +[ ]*[a-f0-9]+: df 38 fistpll \(%eax\) +[a-f0-9]+: 82 c3 01 add \$0x1,%bl +[a-f0-9]+: 82 f3 01 xor \$0x1,%bl +[a-f0-9]+: 82 d3 01 adc \$0x1,%bl --- a/gas/testsuite/gas/i386/opcode.s +++ b/gas/testsuite/gas/i386/opcode.s @@ -592,6 +592,11 @@ foo: cmovpe 0x90909090(%eax),%dx cmovpo 0x90909090(%eax),%dx + fildq (%eax) + fildll (%eax) + fistpq (%eax) + fistpll (%eax) + .byte 0x82, 0xc3, 0x01 .byte 0x82, 0xf3, 0x01 .byte 0x82, 0xd3, 0x01 --- a/gas/testsuite/gas/i386/opcode-intel.d +++ b/gas/testsuite/gas/i386/opcode-intel.d @@ -593,6 +593,10 @@ Disassembly of section .text: [ ]*[a-f0-9]+: 0f 4b 90 90 90 90 90 cmovnp edx,DWORD PTR \[eax-0x6f6f6f70\] [ ]*[a-f0-9]+: 66 0f 4a 90 90 90 90 90 cmovp dx,WORD PTR \[eax-0x6f6f6f70\] [ ]*[a-f0-9]+: 66 0f 4b 90 90 90 90 90 cmovnp dx,WORD PTR \[eax-0x6f6f6f70\] +[ ]*[a-f0-9]+: df 28 fild QWORD PTR \[eax\] +[ ]*[a-f0-9]+: df 28 fild QWORD PTR \[eax\] +[ ]*[a-f0-9]+: df 38 fistp QWORD PTR \[eax\] +[ ]*[a-f0-9]+: df 38 fistp QWORD PTR \[eax\] +[a-f0-9]+: 82 c3 01 add bl,0x1 +[a-f0-9]+: 82 f3 01 xor bl,0x1 +[a-f0-9]+: 82 d3 01 adc bl,0x1 --- a/gas/testsuite/gas/i386/opcode-suffix.d +++ b/gas/testsuite/gas/i386/opcode-suffix.d @@ -593,6 +593,10 @@ Disassembly of section .text: [ ]*[a-f0-9]+: 0f 4b 90 90 90 90 90 cmovnpl -0x6f6f6f70\(%eax\),%edx [ ]*[a-f0-9]+: 66 0f 4a 90 90 90 90 90 cmovpw -0x6f6f6f70\(%eax\),%dx [ ]*[a-f0-9]+: 66 0f 4b 90 90 90 90 90 cmovnpw -0x6f6f6f70\(%eax\),%dx +[ ]*[a-f0-9]+: df 28 fildll \(%eax\) +[ ]*[a-f0-9]+: df 28 fildll \(%eax\) +[ ]*[a-f0-9]+: df 38 fistpll \(%eax\) +[ ]*[a-f0-9]+: df 38 fistpll \(%eax\) +[a-f0-9]+: 82 c3 01 addb \$0x1,%bl +[a-f0-9]+: 82 f3 01 xorb \$0x1,%bl +[a-f0-9]+: 82 d3 01 adcb \$0x1,%bl --- a/gas/testsuite/gas/i386/sse3.d +++ b/gas/testsuite/gas/i386/sse3.d @@ -13,29 +13,30 @@ Disassembly of section .text: 10: df 88 90 90 90 90 [ ]*fisttps -0x6f6f6f70\(%eax\) 16: db 88 90 90 90 90 [ ]*fisttpl -0x6f6f6f70\(%eax\) 1c: dd 88 90 90 90 90 [ ]*fisttpll -0x6f6f6f70\(%eax\) - 22: 66 0f 7c 65 00 [ ]*haddpd 0x0\(%ebp\),%xmm4 - 27: 66 0f 7c ee [ ]*haddpd %xmm6,%xmm5 - 2b: f2 0f 7c 37 [ ]*haddps \(%edi\),%xmm6 - 2f: f2 0f 7c f8 [ ]*haddps %xmm0,%xmm7 - 33: 66 0f 7d c1 [ ]*hsubpd %xmm1,%xmm0 - 37: 66 0f 7d 0a [ ]*hsubpd \(%edx\),%xmm1 - 3b: f2 0f 7d d2 [ ]*hsubps %xmm2,%xmm2 - 3f: f2 0f 7d 1c 24 [ ]*hsubps \(%esp\),%xmm3 - 44: f2 0f f0 2e [ ]*lddqu \(%esi\),%xmm5 - 48: 0f 01 c8 [ ]*monitor %eax,%ecx,%edx - 4b: 0f 01 c8 [ ]*monitor %eax,%ecx,%edx - 4e: f2 0f 12 f7 [ ]*movddup %xmm7,%xmm6 - 52: f2 0f 12 38 [ ]*movddup \(%eax\),%xmm7 - 56: f3 0f 16 01 [ ]*movshdup \(%ecx\),%xmm0 - 5a: f3 0f 16 ca [ ]*movshdup %xmm2,%xmm1 - 5e: f3 0f 12 13 [ ]*movsldup \(%ebx\),%xmm2 - 62: f3 0f 12 dc [ ]*movsldup %xmm4,%xmm3 - 66: 0f 01 c9 [ ]*mwait %eax,%ecx - 69: 0f 01 c9 [ ]*mwait %eax,%ecx - 6c: 67 0f 01 c8 [ ]*monitor %ax,%ecx,%edx - 70: 67 0f 01 c8 [ ]*monitor %ax,%ecx,%edx - 74: f2 0f 12 38 [ ]*movddup \(%eax\),%xmm7 - 78: f2 0f 12 38 [ ]*movddup \(%eax\),%xmm7 +[ ]*[0-9a-f]+: dd 88 90 90 90 90 [ ]*fisttpll -0x6f6f6f70\(%eax\) +[ ]*[0-9a-f]+: 66 0f 7c 65 00 [ ]*haddpd 0x0\(%ebp\),%xmm4 +[ ]*[0-9a-f]+: 66 0f 7c ee [ ]*haddpd %xmm6,%xmm5 +[ ]*[0-9a-f]+: f2 0f 7c 37 [ ]*haddps \(%edi\),%xmm6 +[ ]*[0-9a-f]+: f2 0f 7c f8 [ ]*haddps %xmm0,%xmm7 +[ ]*[0-9a-f]+: 66 0f 7d c1 [ ]*hsubpd %xmm1,%xmm0 +[ ]*[0-9a-f]+: 66 0f 7d 0a [ ]*hsubpd \(%edx\),%xmm1 +[ ]*[0-9a-f]+: f2 0f 7d d2 [ ]*hsubps %xmm2,%xmm2 +[ ]*[0-9a-f]+: f2 0f 7d 1c 24 [ ]*hsubps \(%esp\),%xmm3 +[ ]*[0-9a-f]+: f2 0f f0 2e [ ]*lddqu \(%esi\),%xmm5 +[ ]*[0-9a-f]+: 0f 01 c8 [ ]*monitor %eax,%ecx,%edx +[ ]*[0-9a-f]+: 0f 01 c8 [ ]*monitor %eax,%ecx,%edx +[ ]*[0-9a-f]+: f2 0f 12 f7 [ ]*movddup %xmm7,%xmm6 +[ ]*[0-9a-f]+: f2 0f 12 38 [ ]*movddup \(%eax\),%xmm7 +[ ]*[0-9a-f]+: f3 0f 16 01 [ ]*movshdup \(%ecx\),%xmm0 +[ ]*[0-9a-f]+: f3 0f 16 ca [ ]*movshdup %xmm2,%xmm1 +[ ]*[0-9a-f]+: f3 0f 12 13 [ ]*movsldup \(%ebx\),%xmm2 +[ ]*[0-9a-f]+: f3 0f 12 dc [ ]*movsldup %xmm4,%xmm3 +[ ]*[0-9a-f]+: 0f 01 c9 [ ]*mwait %eax,%ecx +[ ]*[0-9a-f]+: 0f 01 c9 [ ]*mwait %eax,%ecx +[ ]*[0-9a-f]+: 67 0f 01 c8 [ ]*monitor %ax,%ecx,%edx +[ ]*[0-9a-f]+: 67 0f 01 c8 [ ]*monitor %ax,%ecx,%edx +[ ]*[0-9a-f]+: f2 0f 12 38 [ ]*movddup \(%eax\),%xmm7 +[ ]*[0-9a-f]+: f2 0f 12 38 [ ]*movddup \(%eax\),%xmm7 [ ]*[0-9a-f]+: 0f 01 c8[ ]+monitor %eax,%ecx,%edx [ ]*[0-9a-f]+: 67 0f 01 c8[ ]+monitor %ax,%ecx,%edx [ ]*[0-9a-f]+: 0f 01 c9[ ]+mwait %eax,%ecx --- a/gas/testsuite/gas/i386/sse3.s +++ b/gas/testsuite/gas/i386/sse3.s @@ -8,6 +8,7 @@ foo: addsubps %xmm4,%xmm3 fisttps 0x90909090(%eax) fisttpl 0x90909090(%eax) + fisttpq 0x90909090(%eax) fisttpll 0x90909090(%eax) haddpd 0x0(%ebp),%xmm4 haddpd %xmm6,%xmm5 --- a/gas/testsuite/gas/i386/sse3-intel.d +++ b/gas/testsuite/gas/i386/sse3-intel.d @@ -14,6 +14,7 @@ Disassembly of section .text: [ ]*[0-9a-f]+: df 88 90 90 90 90[ ]+fisttp WORD PTR \[eax-0x6f6f6f70\] [ ]*[0-9a-f]+: db 88 90 90 90 90[ ]+fisttp DWORD PTR \[eax-0x6f6f6f70\] [ ]*[0-9a-f]+: dd 88 90 90 90 90[ ]+fisttp QWORD PTR \[eax-0x6f6f6f70\] +[ ]*[0-9a-f]+: dd 88 90 90 90 90[ ]+fisttp QWORD PTR \[eax-0x6f6f6f70\] [ ]*[0-9a-f]+: 66 0f 7c 65 00[ ]+haddpd xmm4,(XMMWORD PTR )?\[ebp(\+0x0)\] [ ]*[0-9a-f]+: 66 0f 7c ee[ ]+haddpd xmm5,xmm6 [ ]*[0-9a-f]+: f2 0f 7c 37[ ]+haddps xmm6,(XMMWORD PTR )?\[edi\] --- a/gas/testsuite/gas/i386/x86-64-lfence-load.d +++ b/gas/testsuite/gas/i386/x86-64-lfence-load.d @@ -44,16 +44,21 @@ Disassembly of section .text: +[a-f0-9]+: 0f ae e8 lfence +[a-f0-9]+: db 55 00 fistl 0x0\(%rbp\) +[a-f0-9]+: df 55 00 fists 0x0\(%rbp\) + +[a-f0-9]+: db 5d 00 fistpl 0x0\(%rbp\) + +[a-f0-9]+: df 5d 00 fistps 0x0\(%rbp\) + +[a-f0-9]+: df 7d 00 fistpll 0x0\(%rbp\) +[a-f0-9]+: db 45 00 fildl 0x0\(%rbp\) +[a-f0-9]+: 0f ae e8 lfence +[a-f0-9]+: df 45 00 filds 0x0\(%rbp\) +[a-f0-9]+: 0f ae e8 lfence + +[a-f0-9]+: df 6d 00 fildll 0x0\(%rbp\) + +[a-f0-9]+: 0f ae e8 lfence +[a-f0-9]+: 9b dd 75 00 fsave 0x0\(%rbp\) +[a-f0-9]+: dd 65 00 frstor 0x0\(%rbp\) +[a-f0-9]+: 0f ae e8 lfence - +[a-f0-9]+: df 45 00 filds 0x0\(%rbp\) - +[a-f0-9]+: 0f ae e8 lfence + +[a-f0-9]+: db 4d 00 fisttpl 0x0\(%rbp\) +[a-f0-9]+: df 4d 00 fisttps 0x0\(%rbp\) + +[a-f0-9]+: dd 4d 00 fisttpll 0x0\(%rbp\) +[a-f0-9]+: d9 65 00 fldenv 0x0\(%rbp\) +[a-f0-9]+: 0f ae e8 lfence +[a-f0-9]+: 9b d9 75 00 fstenv 0x0\(%rbp\) --- a/gas/testsuite/gas/i386/x86-64-lfence-load.s +++ b/gas/testsuite/gas/i386/x86-64-lfence-load.s @@ -27,12 +27,17 @@ _start: flds (%rbp) fistl (%rbp) fists (%rbp) + fistpl (%rbp) + fistps (%rbp) + fistpq (%rbp) fildl (%rbp) filds (%rbp) + fildq (%rbp) fsave (%rbp) frstor (%rbp) - filds (%rbp) + fisttpl (%rbp) fisttps (%rbp) + fisttpq (%rbp) fldenv (%rbp) fstenv (%rbp) fadds (%rbp) --- a/gas/testsuite/gas/i386/x86-64-sse3.d +++ b/gas/testsuite/gas/i386/x86-64-sse3.d @@ -13,6 +13,7 @@ Disassembly of section .text: [ ]*[a-f0-9]+: df 88 90 90 90 00 [ ]*fisttps 0x909090\(%rax\) [ ]*[a-f0-9]+: db 88 90 90 90 00 [ ]*fisttpl 0x909090\(%rax\) [ ]*[a-f0-9]+: dd 88 90 90 90 00 [ ]*fisttpll 0x909090\(%rax\) +[ ]*[a-f0-9]+: dd 88 90 90 90 00 [ ]*fisttpll 0x909090\(%rax\) [ ]*[a-f0-9]+: 66 0f 7c 65 00 [ ]*haddpd 0x0\(%rbp\),%xmm4 [ ]*[a-f0-9]+: 66 0f 7c ee [ ]*haddpd %xmm6,%xmm5 [ ]*[a-f0-9]+: f2 0f 7c 37 [ ]*haddps \(%rdi\),%xmm6 --- a/gas/testsuite/gas/i386/x86-64-sse3.s +++ b/gas/testsuite/gas/i386/x86-64-sse3.s @@ -8,6 +8,7 @@ foo: addsubps %xmm4,%xmm3 fisttps 0x909090(%rax) fisttpl 0x909090(%rax) + fisttpq 0x909090(%rax) fisttpll 0x909090(%rax) haddpd 0x0(%rbp),%xmm4 haddpd %xmm6,%xmm5 --- a/gas/testsuite/gas/i386/x86-64-sse3-intel.d +++ b/gas/testsuite/gas/i386/x86-64-sse3-intel.d @@ -14,6 +14,7 @@ Disassembly of section .text: [ ]*[a-f0-9]+: df 88 90 90 90 00[ ]+fisttp WORD PTR \[rax\+0x909090\] [ ]*[a-f0-9]+: db 88 90 90 90 00[ ]+fisttp DWORD PTR \[rax\+0x909090\] [ ]*[a-f0-9]+: dd 88 90 90 90 00[ ]+fisttp QWORD PTR \[rax\+0x909090\] +[ ]*[a-f0-9]+: dd 88 90 90 90 00[ ]+fisttp QWORD PTR \[rax\+0x909090\] [ ]*[a-f0-9]+: 66 0f 7c 65 00[ ]+haddpd xmm4,(XMMWORD PTR )?\[rbp(\+0x0)\] [ ]*[a-f0-9]+: 66 0f 7c ee[ ]+haddpd xmm5,xmm6 [ ]*[a-f0-9]+: f2 0f 7c 37[ ]+haddps xmm6,(XMMWORD PTR )?\[rdi\] From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR02-VE1-obe.outbound.protection.outlook.com (mail-eopbgr20045.outbound.protection.outlook.com [40.107.2.45]) by sourceware.org (Postfix) with ESMTPS id 563473857C46 for ; Fri, 26 Aug 2022 10:32:56 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 563473857C46 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=L1SXQ0Bdf25iU+W4I7U9uM4WRca7aPSwOqVs3Til3hEbLjy8HhuBrTFwcPvcMcfcYo+fZs0obTC26ayovdSVgM4ozESTFRf/LEVbfNa7w80U6O/aRJi3cMZDPWs8TCDWjPorez4Qjp4kfou+4R68B6dvl3YWmjS1f/S8fSmD1IhjMFRHMt5yCCfwAsIGetlwBHwkl9g/PtlqzejNgJp1MzHcrbd2wKeqFUxz7MWuEeq+1P0wC74zrRW4XUJon9L5gwDKUFsjQ8XpHfSBN+W39y0XOLIe/mDeEIs54Mau/TWUPrL/PGaiQY2b36jHQo0dliHWRAIo8jkhFCgj6zC5YQ== 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=Nty3iM4aLtsiCu29rfqNA5Xktz+mEPTvRnb+Di3pTQk=; b=BtUfoqawZEv01dz+zPFabDXtJCi8cXDtgRJanR4UKow9J2Ll0kcrOFJAqVaLuCYDxOnl9D/himp8BISw+R7wunjtOFuqWGGk5vC52krqf66tEOt9V6/Z3jI53xfcqfTt9hAhVt+ETYSUIhwTMfBXWLO5H9v1eywFFq2hACgtrTU+NcxgRzYbLwulhB2OAmMoa9Sogm4bHRiawEml85RPZLLLffdxGzcJWlxcdFB+gSMNMvvrT+VarUQDyPeTPCGEh5NwlQieV7L/leE0ncA+Cuf+xqiblBiYTqMjyVfXk1YUDV/W9x+NH5Avl0kO/so5UIMS3VHP9WFdKaP1uDqhHw== 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 AM8PR04MB7473.eurprd04.prod.outlook.com (2603:10a6:20b:1d0::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5566.15; Fri, 26 Aug 2022 10:32:54 +0000 Received: from VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::2d5d:bae0:430f:70ad]) by VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::2d5d:bae0:430f:70ad%4]) with mapi id 15.20.5566.015; Fri, 26 Aug 2022 10:32:53 +0000 Message-ID: <2235c0d8-1467-fcbd-a66a-f6aeb5fd7fa4@suse.com> Date: Fri, 26 Aug 2022 12:32:51 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.13.0 Subject: [PATCH v2 5/7] ix86: don't recognize/derive Q suffix in the common case Content-Language: en-US To: Binutils References: <4a27fbde-d2b2-e293-d09e-9709bc5b9792@suse.com> From: Jan Beulich In-Reply-To: <4a27fbde-d2b2-e293-d09e-9709bc5b9792@suse.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: AS9PR07CA0033.eurprd07.prod.outlook.com (2603:10a6:20b:46b::19) To VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 9b6c1618-cd91-443e-14d0-08da874e5586 X-MS-TrafficTypeDiagnostic: AM8PR04MB7473:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ByNbjYdbozzbw8y1y8TQIZmwvpaS1IRkBJjjT+g+xrHOCsDXFvgesogcp0ckmsUFKIa6LBqE60Q+8BuT9NN9eoPqN98yRJb93/FMTrlCxSG8CZ4hHUuNwWJs/hAOm+taT+ZfuUu2MvjUMpSJPRggpAaCxSBha5dPqRBKDx79y8hd7uwAszgfVRIxAQLuhfCGyDehl7O7qGGrokrZinYOG0f1ml0U2d+SKI4MDay4zdue/6QgfW30cumVUZDbIPcjtunA9xumkcxPQBo3MtS4R8Gx/YwC+aN1/bYWjuYlLRencwuo9lNao+dR8CPjNzxwcQWADxBlM1rjD8sawuVj+nlgAOxClZ6pBe4VtQGV1KAtpqOCdrWVNJcd7dOlDtK6xv9aR+gbN9Ilt2aloOOhrUqJ4y76ecH+XeZMzcWWLIxLCts2osh64P2joTZpwRYq/lgWbTFDiI3SuMqs4dpoV3q/17wMi8yL5fmuIkieETuxs95NiGD65I0FmrwkVT9wfkWhXGNqtfZnoC8oCq53dh0PqjrcrXpc92J7dVUeP1l9j0H7aJMfOePl6RzOKvFfqa1+uO2rzn+yXg+XA2QlO7XCCVEhogRUZjwH1pWiXKZxzzzci250wUXFbqBhy92OdmVtbiYVU4XR6fglDtzhCDN+ixurUqqaKw3pG7GNo8iLkH7CKayl1q+3VMhPCFJ9C04IS757vJh0iTM4jZnKY8pAIb5NJNao+J4T4x9E4hpgEzb3kFzhWbYFjGt5cHlBbAiM8VmhPH6rnRLeumv6KJTbyLCcWZXBxcs4Nm8Vg3U= 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:(13230016)(346002)(39860400002)(376002)(136003)(396003)(366004)(83380400001)(6486002)(41300700001)(66946007)(2616005)(4326008)(66476007)(36756003)(186003)(66556008)(31686004)(8676002)(6512007)(31696002)(38100700002)(26005)(86362001)(30864003)(5660300002)(6916009)(2906002)(8936002)(478600001)(316002)(6506007)(45980500001)(43740500002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?b29OcGt5a3djSVlEKzIyTUQ4ZzFCbWZReGJDTVA3TWdtMzhJL2ZRZUwzN2Fa?= =?utf-8?B?TnhIOXpMamMzMDlTODNXQWlMMTh3WWhqS0dRL2VQdVEwWWdORis5bitULzBi?= =?utf-8?B?elVyN3JzZHdaNGxYZnRYT3k0ZEc3UnlReHBGa0xkMXVycUdNQ2lYRUtmVEZP?= =?utf-8?B?YVVGdGhtWDNjdVljRHB4QmZ5dnQvNkpqc21RSHYvckFJTmkrQjhkcVg4dHhF?= =?utf-8?B?eGZRajVzR2RScHhtcHViRUxLZ1NFZHBneE1tQnZUQWw0dEpnUHIvcHpyMnpE?= =?utf-8?B?SnprdlcyTENwamhaUDJDSVVTMVJSS2dPbGd3cmpMenlHWFpPNTY3YWNEN3Bz?= =?utf-8?B?VHBic2hFekZ5cTY4eFRtOFBQbStOYUJudEZRTmdBeVFtYlpjaExuTkFLdjZ2?= =?utf-8?B?blVMaExNOUQ5SXJrNXE1MGNkUGJjcm1STzMzK0lBRitFQlc5d3hiTGpxMHRW?= =?utf-8?B?WXN1TWRJcFQ5aFpoVGRSaUVpcitDd1JNbFQ2c0dOVStOTG1TM3dZMG12d2tW?= =?utf-8?B?WkQvSC9sS2VLSmNueDg1MlN6bHlibXZQQm5JaHEvOXdOWVNKSlZWT2pLUVFq?= =?utf-8?B?SXRKUnV1Q1lrQzd5UWxkOHU3TVdzT0Q0WTAzT1d4RC9MRWRac1YyRUZXU3RC?= =?utf-8?B?RVFlNmZLcDRib3hWaC94ZE5NbnlmcUtPcDlhYUxaN1FKOXNxQUE4NXRuNk10?= =?utf-8?B?aFRnQmdJZk9xYzdGeDlpalJzdzVrVDA2UzVBOHZ1bGhGVEdQd2hzcE1JS2ZW?= =?utf-8?B?YldqaVkvWSt4TEFEUmVtbVU0a3YrblA2ZzRCODBwNkN3WVNvRWJSVEIzQWdK?= =?utf-8?B?OXBXVmMzS3FJK0h2NWU3S0cyVDhZaVZkS1ZtR2tpRkRRWkxFUysrc2VTMkpa?= =?utf-8?B?SjQ5Q0JqK1Q1N3A1a2Q0dGd6LzBRSnlTczJWV2tTN3ZmSnlwTVdjRnBCTVZP?= =?utf-8?B?enpDMmlhUEI2YnpLdVNwY0xNamFBSEpKYkV5QUtWMHR2UEY5WG5oOHREQ2lz?= =?utf-8?B?VjRBMkVaUVpoUmRleUtGc2s1UHlaTFhCTGhDWDJsOGd3bDNiVVdqaEp2SGRI?= =?utf-8?B?cG1GR1I2UzRlcGdjWTBNOTl6MUs4OW1pRldOZFBoc3JQbUM0MDlNTWFLb1Zp?= =?utf-8?B?STVRaHN5d2NKM3Qza2VrMmdQbVp2aXlEUm4rUW0rT25LYUFwOGpLN2ZxWlAw?= =?utf-8?B?bGFqWWRrVnVYTG1Cb0FKQlBkNXloTkg4MFc5ZUxsLy91cWVKZU56dE5MTXZ1?= =?utf-8?B?aDd5bGRJSTdaZ3hsV21SYU9DMGJOcWZVY1l0ZjZVa25FWTJEbUVqVktlVTVE?= =?utf-8?B?d2lzMkJWNXlQS0djYmNBV2Y4L2VSbExORGFUa2d1YU1QZlZzSmNZcEtWclNh?= =?utf-8?B?ODRJTzRoM0ROSzJVUlFkUi9Hck5RbjgwZmJpSmFabUw5R1VvaUdvYUU3RWNy?= =?utf-8?B?Y3ZnUUp4Smc5bzNaaW1TeTRJeVp2SFJrOGtxbHZpT0JvRlM4c1VvdUlxYWg0?= =?utf-8?B?M3orMmpHYm5KL0kzbUErVnNuMFJhaGVoKzRhSnFoS09PT2RsaWl3aUwvRE1C?= =?utf-8?B?bEVtbnQ1RlJVSy96V0FSRjVkMGxuYU4wVGh2bHZhQXNxK2lhK0NHdlpkOHc1?= =?utf-8?B?ZjVJK0d6MVJGVmRtaVNYVjQ0RjVGU2RkOVA4Q2M5NEtyTmNsVHZmYnBNYWwy?= =?utf-8?B?VXNGY3lZSUZhbEZRN1lzZFQ3TzV1dEVKd2ZNYVdiOWppVjF6eFhQMFdFTkx0?= =?utf-8?B?UWtTSUlZblpNbERsZWdYMnpCeUpidTV6aDd4Rk5PTlMreWptZzdvdjJBZ1ox?= =?utf-8?B?K0Y4dnlJMVZzUVphbTlXVHlvdkh1T21FQWZJZEMyQlUzODFWRmVObWU3NWVn?= =?utf-8?B?Y0FUbkFtVWszenErZWlmQ2c3c0ZEWDJ0UzJoQ3ZUTEtpZHUva3F1T3dGVlZQ?= =?utf-8?B?aWMxUExDeVRFbmwwVld1VkJYU1NNTDQ1RXVBemhvbGhBeXN6WFE2cEJuVUxm?= =?utf-8?B?MWpiemRIMGNrY1p1Rkc5RXVaWnQwSFRyTzRCTzgydmNXMVR0VUdZMk9jR1d1?= =?utf-8?B?NUNadm55UlAvcDFVdGtYVEc2di8rcnNMcDcxT05TeHE4a015aVJHaWR2YUJK?= =?utf-8?Q?qvqfQStrg1jbbpNccOZ/1TW64?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9b6c1618-cd91-443e-14d0-08da874e5586 X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6560.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Aug 2022 10:32:53.9489 (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: 09LY2QduJTq/3Kp3QeRPiIx13CpoqwViVEgroWNeQBjcRQBEvh7oYIaeS2+ZXUP8XhxSO03Hc7xCqnMarEweBQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM8PR04MB7473 X-Spam-Status: No, score=-3030.1 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, T_SCC_BODY_TEXT_LINE 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-List-Received-Date: Fri, 26 Aug 2022 10:32:59 -0000 Message-ID: <20220826103251.eNNvlZA-7lf0bDjNomG5Ml9bu2xXMeTLstw6BJSWo74@z> Have its use, except where actually legitimate, result in the same "only supported in 64-bit mode" diagnostic as emitted for other 64-bit only insns. Also suppress deriving of the suffix in Intel mode except in the legitimate cases. This in exchange allows dropping the respective code from match_template(). Oddly enough despite gcc's preference towards FILDQ and FIST{,T}Q we had no testcase whatsoever for these. Therefore such tests are being added. Note that the removed line in the x86-64-lfence-load testcase was redundant with the exact same one a few lines up. --- With gcc's preference towards FILDQ / FIST{,T}Q I wonder whether the disassembler wouldn't better emit a Q suffix instead of the LL one. --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -4826,7 +4826,7 @@ void md_assemble (char *line) { unsigned int j; - char mnemonic[MAX_MNEM_SIZE], mnem_suffix, *copy; + char mnemonic[MAX_MNEM_SIZE], mnem_suffix = 0, *copy; const char *pass1_mnem = NULL; enum i386_error pass1_err = 0; const insn_template *t; @@ -4860,6 +4860,7 @@ md_assemble (char *line) goto no_match; /* No point in trying a 2nd pass - it'll only find the same suffix again. */ + mnem_suffix = i.suffix; goto match_error; } free (copy); @@ -5010,9 +5011,15 @@ md_assemble (char *line) cpu_sub_arch_name ? cpu_sub_arch_name : ""); return; case unsupported_64bit: - as_bad (_("`%s' is %s supported in 64-bit mode"), - pass1_mnem ? pass1_mnem : current_templates->start->name, - flag_code == CODE_64BIT ? _("not") : _("only")); + if (ISLOWER (mnem_suffix)) + as_bad (_("`%s%c' is %s supported in 64-bit mode"), + pass1_mnem ? pass1_mnem : current_templates->start->name, + mnem_suffix, + flag_code == CODE_64BIT ? _("not") : _("only")); + else + as_bad (_("`%s' is %s supported in 64-bit mode"), + pass1_mnem ? pass1_mnem : current_templates->start->name, + flag_code == CODE_64BIT ? _("not") : _("only")); return; case invalid_sib_address: err_msg = _("invalid SIB address"); @@ -5355,6 +5362,23 @@ md_assemble (char *line) last_insn.kind = last_insn_other; } +/* The Q suffix is generally valid only in 64-bit mode, with very few + exceptions: fild, fistp, fisttp, and cmpxchg8b. Note that for fild + and fisttp only one of their two templates is matched below: That's + sufficient since other relevant attributes are the same between both + respective templates. */ +static INLINE bool q_suffix_allowed(const insn_template *t) +{ + return flag_code == CODE_64BIT + || (t->opcode_modifier.opcodespace == SPACE_BASE + && t->base_opcode == 0xdf + && (t->extension_opcode & 1)) /* fild / fistp / fisttp */ + || (t->opcode_modifier.opcodespace == SPACE_0F + && t->base_opcode == 0xc7 + && t->opcode_modifier.opcodeprefix == PREFIX_NONE + && t->extension_opcode == 1) /* cmpxchg8b */; +} + static char * parse_insn (char *line, char *mnemonic) { @@ -5626,6 +5650,10 @@ parse_insn (char *line, char *mnemonic) for (t = current_templates->start; t < current_templates->end; ++t) { supported |= cpu_flags_match (t); + + if (i.suffix == QWORD_MNEM_SUFFIX && !q_suffix_allowed (t)) + supported &= ~CPU_FLAGS_64BIT_MATCH; + if (supported == CPU_FLAGS_PERFECT_MATCH) return l; } @@ -6661,20 +6689,12 @@ match_template (char mnem_suffix) for (j = 0; j < MAX_OPERANDS; j++) operand_types[j] = t->operand_types[j]; - /* In general, don't allow - - 64-bit operands outside of 64-bit mode, - - 32-bit operands on pre-386. */ + /* In general, don't allow 32-bit operands on pre-386. */ specific_error = progress (mnem_suffix ? invalid_instruction_suffix : operand_size_mismatch); j = i.imm_operands + (t->operands > i.imm_operands + 1); - if (((i.suffix == QWORD_MNEM_SUFFIX - && flag_code != CODE_64BIT - && !(t->opcode_modifier.opcodespace == SPACE_0F - && t->base_opcode == 0xc7 - && t->opcode_modifier.opcodeprefix == PREFIX_NONE - && t->extension_opcode == 1) /* cmpxchg8b */) - || (i.suffix == LONG_MNEM_SUFFIX - && !cpu_arch_flags.bitfield.cpui386)) + if (i.suffix == LONG_MNEM_SUFFIX + && !cpu_arch_flags.bitfield.cpui386 && (intel_syntax ? (t->opcode_modifier.mnemonicsize != IGNORESIZE && !intel_float_operand (t->name)) --- a/gas/config/tc-i386-intel.c +++ b/gas/config/tc-i386-intel.c @@ -824,7 +824,7 @@ i386_intel_operand (char *operand_string continue; break; case QWORD_MNEM_SUFFIX: - if (t->opcode_modifier.no_qsuf) + if (t->opcode_modifier.no_qsuf || !q_suffix_allowed (t)) continue; break; case SHORT_MNEM_SUFFIX: --- a/gas/testsuite/gas/i386/opcode.d +++ b/gas/testsuite/gas/i386/opcode.d @@ -592,6 +592,10 @@ Disassembly of section .text: [ ]*[a-f0-9]+: 0f 4b 90 90 90 90 90 cmovnp -0x6f6f6f70\(%eax\),%edx [ ]*[a-f0-9]+: 66 0f 4a 90 90 90 90 90 cmovp -0x6f6f6f70\(%eax\),%dx [ ]*[a-f0-9]+: 66 0f 4b 90 90 90 90 90 cmovnp -0x6f6f6f70\(%eax\),%dx +[ ]*[a-f0-9]+: df 28 fildll \(%eax\) +[ ]*[a-f0-9]+: df 28 fildll \(%eax\) +[ ]*[a-f0-9]+: df 38 fistpll \(%eax\) +[ ]*[a-f0-9]+: df 38 fistpll \(%eax\) +[a-f0-9]+: 82 c3 01 add \$0x1,%bl +[a-f0-9]+: 82 f3 01 xor \$0x1,%bl +[a-f0-9]+: 82 d3 01 adc \$0x1,%bl --- a/gas/testsuite/gas/i386/opcode.s +++ b/gas/testsuite/gas/i386/opcode.s @@ -592,6 +592,11 @@ foo: cmovpe 0x90909090(%eax),%dx cmovpo 0x90909090(%eax),%dx + fildq (%eax) + fildll (%eax) + fistpq (%eax) + fistpll (%eax) + .byte 0x82, 0xc3, 0x01 .byte 0x82, 0xf3, 0x01 .byte 0x82, 0xd3, 0x01 --- a/gas/testsuite/gas/i386/opcode-intel.d +++ b/gas/testsuite/gas/i386/opcode-intel.d @@ -593,6 +593,10 @@ Disassembly of section .text: [ ]*[a-f0-9]+: 0f 4b 90 90 90 90 90 cmovnp edx,DWORD PTR \[eax-0x6f6f6f70\] [ ]*[a-f0-9]+: 66 0f 4a 90 90 90 90 90 cmovp dx,WORD PTR \[eax-0x6f6f6f70\] [ ]*[a-f0-9]+: 66 0f 4b 90 90 90 90 90 cmovnp dx,WORD PTR \[eax-0x6f6f6f70\] +[ ]*[a-f0-9]+: df 28 fild QWORD PTR \[eax\] +[ ]*[a-f0-9]+: df 28 fild QWORD PTR \[eax\] +[ ]*[a-f0-9]+: df 38 fistp QWORD PTR \[eax\] +[ ]*[a-f0-9]+: df 38 fistp QWORD PTR \[eax\] +[a-f0-9]+: 82 c3 01 add bl,0x1 +[a-f0-9]+: 82 f3 01 xor bl,0x1 +[a-f0-9]+: 82 d3 01 adc bl,0x1 --- a/gas/testsuite/gas/i386/opcode-suffix.d +++ b/gas/testsuite/gas/i386/opcode-suffix.d @@ -593,6 +593,10 @@ Disassembly of section .text: [ ]*[a-f0-9]+: 0f 4b 90 90 90 90 90 cmovnpl -0x6f6f6f70\(%eax\),%edx [ ]*[a-f0-9]+: 66 0f 4a 90 90 90 90 90 cmovpw -0x6f6f6f70\(%eax\),%dx [ ]*[a-f0-9]+: 66 0f 4b 90 90 90 90 90 cmovnpw -0x6f6f6f70\(%eax\),%dx +[ ]*[a-f0-9]+: df 28 fildll \(%eax\) +[ ]*[a-f0-9]+: df 28 fildll \(%eax\) +[ ]*[a-f0-9]+: df 38 fistpll \(%eax\) +[ ]*[a-f0-9]+: df 38 fistpll \(%eax\) +[a-f0-9]+: 82 c3 01 addb \$0x1,%bl +[a-f0-9]+: 82 f3 01 xorb \$0x1,%bl +[a-f0-9]+: 82 d3 01 adcb \$0x1,%bl --- a/gas/testsuite/gas/i386/sse3.d +++ b/gas/testsuite/gas/i386/sse3.d @@ -13,29 +13,30 @@ Disassembly of section .text: 10: df 88 90 90 90 90 [ ]*fisttps -0x6f6f6f70\(%eax\) 16: db 88 90 90 90 90 [ ]*fisttpl -0x6f6f6f70\(%eax\) 1c: dd 88 90 90 90 90 [ ]*fisttpll -0x6f6f6f70\(%eax\) - 22: 66 0f 7c 65 00 [ ]*haddpd 0x0\(%ebp\),%xmm4 - 27: 66 0f 7c ee [ ]*haddpd %xmm6,%xmm5 - 2b: f2 0f 7c 37 [ ]*haddps \(%edi\),%xmm6 - 2f: f2 0f 7c f8 [ ]*haddps %xmm0,%xmm7 - 33: 66 0f 7d c1 [ ]*hsubpd %xmm1,%xmm0 - 37: 66 0f 7d 0a [ ]*hsubpd \(%edx\),%xmm1 - 3b: f2 0f 7d d2 [ ]*hsubps %xmm2,%xmm2 - 3f: f2 0f 7d 1c 24 [ ]*hsubps \(%esp\),%xmm3 - 44: f2 0f f0 2e [ ]*lddqu \(%esi\),%xmm5 - 48: 0f 01 c8 [ ]*monitor %eax,%ecx,%edx - 4b: 0f 01 c8 [ ]*monitor %eax,%ecx,%edx - 4e: f2 0f 12 f7 [ ]*movddup %xmm7,%xmm6 - 52: f2 0f 12 38 [ ]*movddup \(%eax\),%xmm7 - 56: f3 0f 16 01 [ ]*movshdup \(%ecx\),%xmm0 - 5a: f3 0f 16 ca [ ]*movshdup %xmm2,%xmm1 - 5e: f3 0f 12 13 [ ]*movsldup \(%ebx\),%xmm2 - 62: f3 0f 12 dc [ ]*movsldup %xmm4,%xmm3 - 66: 0f 01 c9 [ ]*mwait %eax,%ecx - 69: 0f 01 c9 [ ]*mwait %eax,%ecx - 6c: 67 0f 01 c8 [ ]*monitor %ax,%ecx,%edx - 70: 67 0f 01 c8 [ ]*monitor %ax,%ecx,%edx - 74: f2 0f 12 38 [ ]*movddup \(%eax\),%xmm7 - 78: f2 0f 12 38 [ ]*movddup \(%eax\),%xmm7 +[ ]*[0-9a-f]+: dd 88 90 90 90 90 [ ]*fisttpll -0x6f6f6f70\(%eax\) +[ ]*[0-9a-f]+: 66 0f 7c 65 00 [ ]*haddpd 0x0\(%ebp\),%xmm4 +[ ]*[0-9a-f]+: 66 0f 7c ee [ ]*haddpd %xmm6,%xmm5 +[ ]*[0-9a-f]+: f2 0f 7c 37 [ ]*haddps \(%edi\),%xmm6 +[ ]*[0-9a-f]+: f2 0f 7c f8 [ ]*haddps %xmm0,%xmm7 +[ ]*[0-9a-f]+: 66 0f 7d c1 [ ]*hsubpd %xmm1,%xmm0 +[ ]*[0-9a-f]+: 66 0f 7d 0a [ ]*hsubpd \(%edx\),%xmm1 +[ ]*[0-9a-f]+: f2 0f 7d d2 [ ]*hsubps %xmm2,%xmm2 +[ ]*[0-9a-f]+: f2 0f 7d 1c 24 [ ]*hsubps \(%esp\),%xmm3 +[ ]*[0-9a-f]+: f2 0f f0 2e [ ]*lddqu \(%esi\),%xmm5 +[ ]*[0-9a-f]+: 0f 01 c8 [ ]*monitor %eax,%ecx,%edx +[ ]*[0-9a-f]+: 0f 01 c8 [ ]*monitor %eax,%ecx,%edx +[ ]*[0-9a-f]+: f2 0f 12 f7 [ ]*movddup %xmm7,%xmm6 +[ ]*[0-9a-f]+: f2 0f 12 38 [ ]*movddup \(%eax\),%xmm7 +[ ]*[0-9a-f]+: f3 0f 16 01 [ ]*movshdup \(%ecx\),%xmm0 +[ ]*[0-9a-f]+: f3 0f 16 ca [ ]*movshdup %xmm2,%xmm1 +[ ]*[0-9a-f]+: f3 0f 12 13 [ ]*movsldup \(%ebx\),%xmm2 +[ ]*[0-9a-f]+: f3 0f 12 dc [ ]*movsldup %xmm4,%xmm3 +[ ]*[0-9a-f]+: 0f 01 c9 [ ]*mwait %eax,%ecx +[ ]*[0-9a-f]+: 0f 01 c9 [ ]*mwait %eax,%ecx +[ ]*[0-9a-f]+: 67 0f 01 c8 [ ]*monitor %ax,%ecx,%edx +[ ]*[0-9a-f]+: 67 0f 01 c8 [ ]*monitor %ax,%ecx,%edx +[ ]*[0-9a-f]+: f2 0f 12 38 [ ]*movddup \(%eax\),%xmm7 +[ ]*[0-9a-f]+: f2 0f 12 38 [ ]*movddup \(%eax\),%xmm7 [ ]*[0-9a-f]+: 0f 01 c8[ ]+monitor %eax,%ecx,%edx [ ]*[0-9a-f]+: 67 0f 01 c8[ ]+monitor %ax,%ecx,%edx [ ]*[0-9a-f]+: 0f 01 c9[ ]+mwait %eax,%ecx --- a/gas/testsuite/gas/i386/sse3.s +++ b/gas/testsuite/gas/i386/sse3.s @@ -8,6 +8,7 @@ foo: addsubps %xmm4,%xmm3 fisttps 0x90909090(%eax) fisttpl 0x90909090(%eax) + fisttpq 0x90909090(%eax) fisttpll 0x90909090(%eax) haddpd 0x0(%ebp),%xmm4 haddpd %xmm6,%xmm5 --- a/gas/testsuite/gas/i386/sse3-intel.d +++ b/gas/testsuite/gas/i386/sse3-intel.d @@ -14,6 +14,7 @@ Disassembly of section .text: [ ]*[0-9a-f]+: df 88 90 90 90 90[ ]+fisttp WORD PTR \[eax-0x6f6f6f70\] [ ]*[0-9a-f]+: db 88 90 90 90 90[ ]+fisttp DWORD PTR \[eax-0x6f6f6f70\] [ ]*[0-9a-f]+: dd 88 90 90 90 90[ ]+fisttp QWORD PTR \[eax-0x6f6f6f70\] +[ ]*[0-9a-f]+: dd 88 90 90 90 90[ ]+fisttp QWORD PTR \[eax-0x6f6f6f70\] [ ]*[0-9a-f]+: 66 0f 7c 65 00[ ]+haddpd xmm4,(XMMWORD PTR )?\[ebp(\+0x0)\] [ ]*[0-9a-f]+: 66 0f 7c ee[ ]+haddpd xmm5,xmm6 [ ]*[0-9a-f]+: f2 0f 7c 37[ ]+haddps xmm6,(XMMWORD PTR )?\[edi\] --- a/gas/testsuite/gas/i386/x86-64-lfence-load.d +++ b/gas/testsuite/gas/i386/x86-64-lfence-load.d @@ -44,16 +44,21 @@ Disassembly of section .text: +[a-f0-9]+: 0f ae e8 lfence +[a-f0-9]+: db 55 00 fistl 0x0\(%rbp\) +[a-f0-9]+: df 55 00 fists 0x0\(%rbp\) + +[a-f0-9]+: db 5d 00 fistpl 0x0\(%rbp\) + +[a-f0-9]+: df 5d 00 fistps 0x0\(%rbp\) + +[a-f0-9]+: df 7d 00 fistpll 0x0\(%rbp\) +[a-f0-9]+: db 45 00 fildl 0x0\(%rbp\) +[a-f0-9]+: 0f ae e8 lfence +[a-f0-9]+: df 45 00 filds 0x0\(%rbp\) +[a-f0-9]+: 0f ae e8 lfence + +[a-f0-9]+: df 6d 00 fildll 0x0\(%rbp\) + +[a-f0-9]+: 0f ae e8 lfence +[a-f0-9]+: 9b dd 75 00 fsave 0x0\(%rbp\) +[a-f0-9]+: dd 65 00 frstor 0x0\(%rbp\) +[a-f0-9]+: 0f ae e8 lfence - +[a-f0-9]+: df 45 00 filds 0x0\(%rbp\) - +[a-f0-9]+: 0f ae e8 lfence + +[a-f0-9]+: db 4d 00 fisttpl 0x0\(%rbp\) +[a-f0-9]+: df 4d 00 fisttps 0x0\(%rbp\) + +[a-f0-9]+: dd 4d 00 fisttpll 0x0\(%rbp\) +[a-f0-9]+: d9 65 00 fldenv 0x0\(%rbp\) +[a-f0-9]+: 0f ae e8 lfence +[a-f0-9]+: 9b d9 75 00 fstenv 0x0\(%rbp\) --- a/gas/testsuite/gas/i386/x86-64-lfence-load.s +++ b/gas/testsuite/gas/i386/x86-64-lfence-load.s @@ -27,12 +27,17 @@ _start: flds (%rbp) fistl (%rbp) fists (%rbp) + fistpl (%rbp) + fistps (%rbp) + fistpq (%rbp) fildl (%rbp) filds (%rbp) + fildq (%rbp) fsave (%rbp) frstor (%rbp) - filds (%rbp) + fisttpl (%rbp) fisttps (%rbp) + fisttpq (%rbp) fldenv (%rbp) fstenv (%rbp) fadds (%rbp) --- a/gas/testsuite/gas/i386/x86-64-sse3.d +++ b/gas/testsuite/gas/i386/x86-64-sse3.d @@ -13,6 +13,7 @@ Disassembly of section .text: [ ]*[a-f0-9]+: df 88 90 90 90 00 [ ]*fisttps 0x909090\(%rax\) [ ]*[a-f0-9]+: db 88 90 90 90 00 [ ]*fisttpl 0x909090\(%rax\) [ ]*[a-f0-9]+: dd 88 90 90 90 00 [ ]*fisttpll 0x909090\(%rax\) +[ ]*[a-f0-9]+: dd 88 90 90 90 00 [ ]*fisttpll 0x909090\(%rax\) [ ]*[a-f0-9]+: 66 0f 7c 65 00 [ ]*haddpd 0x0\(%rbp\),%xmm4 [ ]*[a-f0-9]+: 66 0f 7c ee [ ]*haddpd %xmm6,%xmm5 [ ]*[a-f0-9]+: f2 0f 7c 37 [ ]*haddps \(%rdi\),%xmm6 --- a/gas/testsuite/gas/i386/x86-64-sse3.s +++ b/gas/testsuite/gas/i386/x86-64-sse3.s @@ -8,6 +8,7 @@ foo: addsubps %xmm4,%xmm3 fisttps 0x909090(%rax) fisttpl 0x909090(%rax) + fisttpq 0x909090(%rax) fisttpll 0x909090(%rax) haddpd 0x0(%rbp),%xmm4 haddpd %xmm6,%xmm5 --- a/gas/testsuite/gas/i386/x86-64-sse3-intel.d +++ b/gas/testsuite/gas/i386/x86-64-sse3-intel.d @@ -14,6 +14,7 @@ Disassembly of section .text: [ ]*[a-f0-9]+: df 88 90 90 90 00[ ]+fisttp WORD PTR \[rax\+0x909090\] [ ]*[a-f0-9]+: db 88 90 90 90 00[ ]+fisttp DWORD PTR \[rax\+0x909090\] [ ]*[a-f0-9]+: dd 88 90 90 90 00[ ]+fisttp QWORD PTR \[rax\+0x909090\] +[ ]*[a-f0-9]+: dd 88 90 90 90 00[ ]+fisttp QWORD PTR \[rax\+0x909090\] [ ]*[a-f0-9]+: 66 0f 7c 65 00[ ]+haddpd xmm4,(XMMWORD PTR )?\[rbp(\+0x0)\] [ ]*[a-f0-9]+: 66 0f 7c ee[ ]+haddpd xmm5,xmm6 [ ]*[a-f0-9]+: f2 0f 7c 37[ ]+haddps xmm6,(XMMWORD PTR )?\[rdi\]