From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04on2047.outbound.protection.outlook.com [40.107.7.47]) by sourceware.org (Postfix) with ESMTPS id 77672385B53F for ; Fri, 2 Dec 2022 10:21:50 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 77672385B53F 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=BginPPpL//BOn8EHfnOxgEgk4ss/yvb0UiABHR8/5LJrdRIR8xPJGE/h3gIhxNn3+T4GydN/TmrLGcFQmZbgoOS7VNAJSLuhfkDv1IrYuS0NSUi7KW3pKfMGTePNQANXTEDmjDps6ong+bvq1Bt3V4TZKqG+8DWlKmhk97S9/+VKE30UVPrss08qhTwdaZjTVykDbObsg0Ed2JWBrTNT0wTWVTlYDFgPfEmikBEVQmr6YrdaJRCRk9YVmELnWSyibV4dWJFiE31dWd+smg9fVMreG8xGs63+ZI78TLa3YfJKqlRPOiIzf2uQq9HfJckwzdpZZc/kicFIQpZDe8KOJw== 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=BA8ttiGTKtoroAKuwXn9e2RmpXgt8DGdStKaESe9kes=; b=T9WE4UHRTY10ehuwBk5HkuRhlK9eWo2msXQZQi3fc7jzzWkV5EDvMJirdMX6zW+Q2jM3Um2dKdvsnXh1mWU9P8JHfbh4zzM9kRt9qjHJEdZadB11uJ9KY2tTiTMLeYcnxeahFsVmNE3nZ3bDLKUfRHQgNcIUHKXfHHlzgthLaygP78VCCtmpb+E88wtGMoVKNvD24jnrPeaR560jSdzwlgaDnKMR/Ndjt7gsY1HBgN4e+zdozrGrLiA7oLOzLNmZ2VceHR1OWgKxzvcqgJO8gbG+Z2BdCokcL9yCHKbPbE68Y4rI+W+cPs3VMM+DAW/5ihOwM+XbfJmmqpuYKCRj2Q== 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=BA8ttiGTKtoroAKuwXn9e2RmpXgt8DGdStKaESe9kes=; b=RwsiEH2jrKcDmWbUlNjrdTP33dxUql3iA5H1MCiK1F09gX0IegPK96hnGEdncOFQDIvOO65r8bj1BvmpSjjgfomR7igZ7b8OzVEkGzOXIVNnqi7Bd4g8Cbq299EEcBp+CsFsQVKLNNLDHk7MSrEtms3ImBe+3JqJlRowYxPuuNj9fslPcKyHv6OqoElO2mMkQ9X8WSCucHA1FuxJ4gWfLh35BSIx48QGCqm8A8stbfZp1PQa0S931QlnGnPenFXF2OsSL1Hii/atIas+V9kyYw/9lKcqI7L10hkeDvkdZEnjdyTZxRNv/IWB5+gUdSSH3BaV2nuG2W2E3iDyu5qGaw== 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 AM8PR04MB7409.eurprd04.prod.outlook.com (2603:10a6:20b:1c5::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5857.19; Fri, 2 Dec 2022 10:21:47 +0000 Received: from VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::4da2:ea8b:e71e:b8d8]) by VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::4da2:ea8b:e71e:b8d8%4]) with mapi id 15.20.5857.023; Fri, 2 Dec 2022 10:21:47 +0000 Message-ID: <46702842-5bc7-113e-bab8-d67304f0f337@suse.com> Date: Fri, 2 Dec 2022 11:21:46 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.5.0 Subject: [PATCH v7 7/7] x86: further re-work insn/suffix recognition to also cover MOVSX Content-Language: en-US To: Binutils Cc: "H.J. Lu" References: From: Jan Beulich In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: FR3P281CA0085.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1f::22) To VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1PR04MB6560:EE_|AM8PR04MB7409:EE_ X-MS-Office365-Filtering-Correlation-Id: 5073300b-ea19-4217-315d-08dad44f04e0 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: mN2OH7j3eInmRDiDTDH1kHee1cs9rAB6lRMFyCS6gHkxwik9ZPlYpankLPcO0BuYh9oIDqb6M8oS9Sz3crhON5tERSHNNcYR7iWU3PUz8X2+3AQGP7/FYzMxJwy/Ui6SGOa08LuhSiS2o5EcapxWsZxFKdA3AkE7wD7Cp6rLLCmy5ITsRDqv4EE2ctZXdjSScOfumxB9/n2vwvkJZEF8obnOD1E/RRIU7+53UNtoZdH7rq5YH6E6fJ43M55ReBUxeEHfUWQkcDIWoEoqahn9BKrbcpLxZ+GdiRLbsD5LIxu0WYoX+O7UHupP/d2xpnH4QLcxDzKn/GKrwles7AeE5tnXffIQnJ9/TgqFnR35YCzSsXXf5Mk5wd6u91J+95VVUIlJ44qDdQ9ANdolmy92EnJWkfUbdC0GOUyGs8wLRePoUjLbunyyBC0W5Ftn1K+2Ab/D/8/eMOSbFf3H4vOLSDzHxm8aku6f1+WDxjnNq3N5b61WW23XZXA5LGvKvBzvK/D2WkIdUIcweo1AgNHzsY2DDeDE5mTna2UqAxtoZYRN+DejZahrxLGHc72uQXdOZ7P/8iLF3pGvuztDDQp/DN7nXUgPdkOiDvfV43MrhipCN7yw28o1NTc5N7Epo2x3diDiwQFMuDJCUiM3omzf2JkvcVK8U5e7zkTCjcSgS/gtS3wVtWpwby+7bpWbk4fol6rR9WDrddd7rcvbOD4aAKZH5htocQicKJH94Y/2B2o= 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:(13230022)(39860400002)(346002)(136003)(366004)(396003)(376002)(451199015)(66899015)(31686004)(2616005)(2906002)(30864003)(26005)(36756003)(8936002)(6486002)(6512007)(5660300002)(31696002)(86362001)(41300700001)(6506007)(66476007)(478600001)(186003)(66556008)(66946007)(38100700002)(6916009)(316002)(8676002)(4326008)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?bnU0eVprMXdjUktiSkxjTjdjU2RnQ2M0SUdjWXJRa0FaS0dVaUp4dnhEZjM5?= =?utf-8?B?VVdib0s3MFg2b3VteThwNGxEVEVpNVFUNFZHUzVZOFpPdXhyaU56Y1FzaTNP?= =?utf-8?B?OUtXaGpYMmxKYlVWdlJOVnBHYnlJcDJGYmh5MVdZYlMxRVJOTnVVa1VNL21E?= =?utf-8?B?dGJXbCt2TjNFQXo3RldndjY0dmovR2swdUVSUEFxNHoxc01nOERyUGZ1N1hi?= =?utf-8?B?ZURobkhlbUFBZHJxTHZHOW5RS1F2bkpDS1BySzYwK2pDK0NCMGFNMWQ1bXFN?= =?utf-8?B?ZkQ5VWxCSkc1QTNvdGpsRXc4T2tSeFN6dktDWFNGL1Q5ejNrVWJnRjl5YWdX?= =?utf-8?B?NVVhNS9PS1NMY0MvYnBKbGhLay9UUUFaSElHSEhUak80NEprZkRiNTNZNGVM?= =?utf-8?B?Wjh5TnpqanBpWWpURDNzd2gxb01KRXJYa1VSL2FHSnhyL215SnN5Y2RFdldR?= =?utf-8?B?ZkZqdHZTcm5KT0h3UXQ3TlFLbmZIRXVKOXh0NUxEMzc0RVRFVFRsNWd4cHFN?= =?utf-8?B?Tng1QTVnVWF5S3dJRXpwUElqY1JLajdPVnpYRmdhdDFUUk9XZm1tL3loUzBo?= =?utf-8?B?cnI5NmZIR2sxYUtQMGlMOVlWYnV2VDN0S1Rya1JLRnVOSWxyVXVySDNBWnhO?= =?utf-8?B?YTZFVnhDSkpUSzV6MXlQNWtBWG10dU9FT0VzY2oyU2ljV0diWDZSVldMa0dq?= =?utf-8?B?dW93b0tROENTWmIwL3VQdElCZTcrMzRJUDJ5M1RhVXYxY0puNHZSTlIwWVU3?= =?utf-8?B?cVF0ZTc3SlhHaEN6VEg0TWV4TVo2NE5ocWJXME1DRlhUUXcxelR4RGpDVnd1?= =?utf-8?B?a2tRZW5ib3FpSTh6S21lcTlFM1BxbG9ZNm15cHplTTZHL0RNbXNkMXprUW9C?= =?utf-8?B?V1dSeHh6eXBjMnMwNnVJUmRoSFBWU0dTRmF2TDJObkljeEY0a2s0UU1OdlJ0?= =?utf-8?B?ME5leVNMd0o5QS9RUVQvYUREdGdKTzZQYkxZWEN5bVJTNFA1MC80K0xrZFRD?= =?utf-8?B?TmRVMG5QaFhBbVYwZWlBZEpZTDZsUHJ5YWFya2IwdDNrTXVlZ2cwTWo0MkNK?= =?utf-8?B?WGRZajZ5MzgxN0g4d0NWLzdXcXRqVjM4RmVUL3RjRmlBVVZBVU5ITnZPSjRL?= =?utf-8?B?ekNvWFBNcTc1THJIMUw4SnZpaFpiRUY3UGwzYWVFanRsVXlJelR5VlhHcHQ4?= =?utf-8?B?ZThSbWZWTWNPTDNlOTJlK3JVTDVuTFFISlUxQzdQR3hCY2ZIck95ekpmMnZM?= =?utf-8?B?RDNpdmllWU5uaGZVYkFDMFJqNld2TVpxWXlBNjFKMXN4NFc0TEt0NytqYURu?= =?utf-8?B?NzFVSHUvUTJ5eTAwOHJKNUNqY3p6aVF3eXU1aXlNM0t2UXFCL04rUkZUVDV2?= =?utf-8?B?ZU9NYWJmV0ZMTW9VdEZqRnNDSU9MV1M1bWJiQUV2NTFKWlVxVWtkUDJNQjN2?= =?utf-8?B?RllsYnFIVXpvbDJKWDgrNTU5K2ZSdHZtM1FWUzZFclBCdTlveGkrMzhNZ2Vi?= =?utf-8?B?TlhLcDNHeW5kTy9HWUxVRW5aUzZVZ3NzcHdCeURDMkdjZW55MCtYMGUzL3Nw?= =?utf-8?B?YWZwbXdidHEwd05FaEhMbkhVTklYMm12WDVXekovczEzZWZPM2JZamNTMEs4?= =?utf-8?B?blVwTWdBanFFZjRqc2VybGdvQTZUUytwMklZWmIyamZxcVZaOGZVS0xjSVF2?= =?utf-8?B?MmRxNzJ3RTQxTFFYUGYzR0tzdGdTZVY3bDYzTmVPQ2QybDBRY0xkNmg4b1hJ?= =?utf-8?B?VFBBa3lxMC9wMlErMFN2bUVleXhJcld1VVg2ZnVNSGZqNFVXRW51SHRwNXJp?= =?utf-8?B?UGNFZHpxWGZJOURlMFlYOURmUUhNYU0zTzNuUHNtdzlSQU1Da0pMNS9sempn?= =?utf-8?B?bEZFNk1MUkNxcGdJakZsU2NBelVySDN0SHBRdysxNlVYYkREamxDcDZKU0s3?= =?utf-8?B?ekp0SWRNR00xeUQzVTJyMnpCdHp0UVFDTTc4M2xyMXpSTzc4WU95VTRKYjNN?= =?utf-8?B?cTZCUU5nRmNyemNSK3RCV3NKQ0NQTjZpdkVLZmZEc05HZWNnZFBaRnZNaVZ2?= =?utf-8?B?bDY4eTBJd2VxSFBXYmExYTFZV2tJZGJmeUlBemk3RmpYL3d0Q1grTlR2REpP?= =?utf-8?Q?K3AgSyFRto/CRKUhe0nOs7Blw?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5073300b-ea19-4217-315d-08dad44f04e0 X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6560.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Dec 2022 10:21:47.6902 (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: +zKrN28I6ixFtE3ROCjtD7JEbZGL0xoi7dwglpS42/DD6Tc40n8vPk8/A0UQdi67kKaiTbOIQhwQLD89EB1CKQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM8PR04MB7409 X-Spam-Status: No, score=-3029.0 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: PR gas/29524 Having templates with a suffix explicitly present has always been quirky. After prior adjustment all that's left to also eliminate the anomaly from move-with-sign-extend is to consolidate the insn templates and to make may_need_pass2() cope (plus extend testsuite coverage). --- v7: Re-base. v6: Re-base over dropping of Pass2 attribute. v5: Split off from earlier patch, merged with prior patch dealing with just x86-64's MOVSL. --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -4852,7 +4852,11 @@ static INLINE bool may_need_pass2 (const { return t->opcode_modifier.sse2avx /* Note that all SSE2AVX templates have at least one operand. */ - && t->operand_types[t->operands - 1].bitfield.class == RegSIMD; + ? t->operand_types[t->operands - 1].bitfield.class == RegSIMD + : (t->opcode_modifier.opcodespace == SPACE_0F + && (t->base_opcode | 1) == 0xbf) + || (t->opcode_modifier.opcodespace == SPACE_BASE + && t->base_opcode == 0x63); } /* This is the guts of the machine-dependent assembler. LINE points to a --- a/gas/testsuite/gas/i386/i386.exp +++ b/gas/testsuite/gas/i386/i386.exp @@ -73,6 +73,7 @@ if [gas_32_check] then { run_dump_test "amd" run_dump_test "katmai" run_dump_test "jump" + run_dump_test "movs32" run_dump_test "movz32" run_dump_test "relax-1" run_dump_test "relax-2" @@ -820,6 +821,7 @@ if [gas_64_check] then { run_dump_test "x86-64-segovr" run_list_test "x86-64-inval-seg" "-al" run_dump_test "x86-64-branch" + run_dump_test "movs64" run_dump_test "movz64" run_dump_test "x86-64-relax-1" run_dump_test "svme64" --- /dev/null +++ b/gas/testsuite/gas/i386/movs.s @@ -0,0 +1,39 @@ + .text +movs: + movsb %al,%ax + movsb (%eax),%ax + movsb %al,%eax + movsb (%eax),%eax +.ifdef x86_64 + movsb %al,%rax + movsb (%rax),%rax +.endif + + movsbw %al,%ax + movsbw (%eax),%ax + movsbl %al,%eax + movsbl (%eax),%eax +.ifdef x86_64 + movsbq %al,%rax + movsbq (%rax),%rax +.endif + + movsw %ax,%eax + movsw (%eax),%eax +.ifdef x86_64 + movsw %ax,%rax + movsw (%rax),%rax +.endif + + movswl %ax,%eax + movswl (%eax),%eax +.ifdef x86_64 + movswq %ax,%rax + movswq (%rax),%rax + + movsl %eax,%rax + movsl (%rax),%rax + + movslq %eax,%rax + movslq (%rax),%rax +.endif --- /dev/null +++ b/gas/testsuite/gas/i386/movs32.d @@ -0,0 +1,22 @@ +#objdump: -dw +#source: movs.s +#name: x86 mov with sign-extend (32-bit object) + +.*: +file format .* + +Disassembly of section .text: + +0+ : +[ ]*[a-f0-9]+: 66 0f be c0 * movsbw %al,%ax +[ ]*[a-f0-9]+: 66 0f be 00 * movsbw \(%eax\),%ax +[ ]*[a-f0-9]+: 0f be c0 * movsbl %al,%eax +[ ]*[a-f0-9]+: 0f be 00 * movsbl \(%eax\),%eax +[ ]*[a-f0-9]+: 66 0f be c0 * movsbw %al,%ax +[ ]*[a-f0-9]+: 66 0f be 00 * movsbw \(%eax\),%ax +[ ]*[a-f0-9]+: 0f be c0 * movsbl %al,%eax +[ ]*[a-f0-9]+: 0f be 00 * movsbl \(%eax\),%eax +[ ]*[a-f0-9]+: 0f bf c0 * movswl %ax,%eax +[ ]*[a-f0-9]+: 0f bf 00 * movswl \(%eax\),%eax +[ ]*[a-f0-9]+: 0f bf c0 * movswl %ax,%eax +[ ]*[a-f0-9]+: 0f bf 00 * movswl \(%eax\),%eax +#pass --- /dev/null +++ b/gas/testsuite/gas/i386/movs64.d @@ -0,0 +1,30 @@ +#objdump: -dw +#source: movs.s +#name: x86 mov with sign-extend (64-bit object) + +.*: +file format .* + +Disassembly of section .text: + +0+ : +[ ]*[a-f0-9]+: 66 0f be c0 * movsbw %al,%ax +[ ]*[a-f0-9]+: 67 66 0f be 00 * movsbw \(%eax\),%ax +[ ]*[a-f0-9]+: 0f be c0 * movsbl %al,%eax +[ ]*[a-f0-9]+: 67 0f be 00 * movsbl \(%eax\),%eax +[ ]*[a-f0-9]+: 48 0f be c0 * movsbq %al,%rax +[ ]*[a-f0-9]+: 48 0f be 00 * movsbq \(%rax\),%rax +[ ]*[a-f0-9]+: 66 0f be c0 * movsbw %al,%ax +[ ]*[a-f0-9]+: 67 66 0f be 00 * movsbw \(%eax\),%ax +[ ]*[a-f0-9]+: 0f be c0 * movsbl %al,%eax +[ ]*[a-f0-9]+: 67 0f be 00 * movsbl \(%eax\),%eax +[ ]*[a-f0-9]+: 48 0f be c0 * movsbq %al,%rax +[ ]*[a-f0-9]+: 48 0f be 00 * movsbq \(%rax\),%rax +[ ]*[a-f0-9]+: 0f bf c0 * movswl %ax,%eax +[ ]*[a-f0-9]+: 67 0f bf 00 * movswl \(%eax\),%eax +[ ]*[a-f0-9]+: 48 0f bf c0 * movswq %ax,%rax +[ ]*[a-f0-9]+: 48 0f bf 00 * movswq \(%rax\),%rax +[ ]*[a-f0-9]+: 0f bf c0 * movswl %ax,%eax +[ ]*[a-f0-9]+: 67 0f bf 00 * movswl \(%eax\),%eax +[ ]*[a-f0-9]+: 48 0f bf c0 * movswq %ax,%rax +[ ]*[a-f0-9]+: 48 0f bf 00 * movswq \(%rax\),%rax +#pass --- a/gas/testsuite/gas/i386/movx16.l +++ b/gas/testsuite/gas/i386/movx16.l @@ -41,11 +41,11 @@ [ ]*[1-9][0-9]*[ ]+movsb %ax, %cl [ ]*[1-9][0-9]*[ ]+movsb %eax, %cl [ ]*[1-9][0-9]*[ ]* -[ ]*[1-9][0-9]*[ ]+movsb %al, %cx +[ ]*[1-9][0-9]* \?\?\?\? 0FBEC8[ ]+movsb %al, %cx [ ]*[1-9][0-9]*[ ]+movsb %ax, %cx [ ]*[1-9][0-9]*[ ]+movsb %eax, %cx [ ]*[1-9][0-9]*[ ]* -[ ]*[1-9][0-9]*[ ]+movsb %al, %ecx +[ ]*[1-9][0-9]* \?\?\?\? 660FBEC8[ ]+movsb %al, %ecx [ ]*[1-9][0-9]*[ ]+movsb %ax, %ecx [ ]*[1-9][0-9]*[ ]+movsb %eax, %ecx [ ]*[1-9][0-9]*[ ]* @@ -82,7 +82,7 @@ [ ]*[1-9][0-9]*[ ]+movsw %eax, %cx [ ]*[1-9][0-9]*[ ]* [ ]*[1-9][0-9]*[ ]+movsw %al, %ecx -[ ]*[1-9][0-9]*[ ]+movsw %ax, %ecx +[ ]*[1-9][0-9]* \?\?\?\? 660FBFC8[ ]+movsw %ax, %ecx [ ]*[1-9][0-9]*[ ]+movsw %eax, %ecx [ ]*[1-9][0-9]*[ ]* [ ]*[1-9][0-9]*[ ]+movswl %al, %cl --- a/gas/testsuite/gas/i386/movx32.l +++ b/gas/testsuite/gas/i386/movx32.l @@ -41,11 +41,11 @@ [ ]*[1-9][0-9]*[ ]+movsb %ax, %cl [ ]*[1-9][0-9]*[ ]+movsb %eax, %cl [ ]*[1-9][0-9]*[ ]* -[ ]*[1-9][0-9]*[ ]+movsb %al, %cx +[ ]*[1-9][0-9]* \?\?\?\? 660FBEC8[ ]+movsb %al, %cx [ ]*[1-9][0-9]*[ ]+movsb %ax, %cx [ ]*[1-9][0-9]*[ ]+movsb %eax, %cx [ ]*[1-9][0-9]*[ ]* -[ ]*[1-9][0-9]*[ ]+movsb %al, %ecx +[ ]*[1-9][0-9]* \?\?\?\? 0FBEC8[ ]+movsb %al, %ecx [ ]*[1-9][0-9]*[ ]+movsb %ax, %ecx [ ]*[1-9][0-9]*[ ]+movsb %eax, %ecx [ ]*[1-9][0-9]*[ ]* @@ -82,7 +82,7 @@ [ ]*[1-9][0-9]*[ ]+movsw %eax, %cx [ ]*[1-9][0-9]*[ ]* [ ]*[1-9][0-9]*[ ]+movsw %al, %ecx -[ ]*[1-9][0-9]*[ ]+movsw %ax, %ecx +[ ]*[1-9][0-9]* \?\?\?\? 0FBFC8[ ]+movsw %ax, %ecx [ ]*[1-9][0-9]*[ ]+movsw %eax, %ecx [ ]*[1-9][0-9]*[ ]* [ ]*[1-9][0-9]*[ ]+movswl %al, %cl --- a/gas/testsuite/gas/i386/movx64.l +++ b/gas/testsuite/gas/i386/movx64.l @@ -106,17 +106,17 @@ [ ]*[1-9][0-9]*[ ]+movsb %eax, %cl [ ]*[1-9][0-9]*[ ]+movsb %rax, %cl [ ]*[1-9][0-9]*[ ]* -[ ]*[1-9][0-9]*[ ]+movsb %al, %cx +[ ]*[1-9][0-9]* \?\?\?\? 660FBEC8[ ]+movsb %al, %cx [ ]*[1-9][0-9]*[ ]+movsb %ax, %cx [ ]*[1-9][0-9]*[ ]+movsb %eax, %cx [ ]*[1-9][0-9]*[ ]+movsb %rax, %cx [ ]*[1-9][0-9]*[ ]* -[ ]*[1-9][0-9]*[ ]+movsb %al, %ecx +[ ]*[1-9][0-9]* \?\?\?\? 0FBEC8[ ]+movsb %al, %ecx [ ]*[1-9][0-9]*[ ]+movsb %ax, %ecx [ ]*[1-9][0-9]*[ ]+movsb %eax, %ecx [ ]*[1-9][0-9]*[ ]+movsb %rax, %ecx [ ]*[1-9][0-9]*[ ]* -[ ]*[1-9][0-9]*[ ]+movsb %al, %rcx +[ ]*[1-9][0-9]* \?\?\?\? 480FBEC8[ ]+movsb %al, %rcx [ ]*[1-9][0-9]*[ ]+movsb %ax, %rcx [ ]*[1-9][0-9]*[ ]+movsb %eax, %rcx [ ]*[1-9][0-9]*[ ]+movsb %rax, %rcx @@ -192,12 +192,12 @@ [ ]*[1-9][0-9]*[ ]+movsw %rax, %cx [ ]*[1-9][0-9]*[ ]* [ ]*[1-9][0-9]*[ ]+movsw %al, %ecx -[ ]*[1-9][0-9]*[ ]+movsw %ax, %ecx +[ ]*[1-9][0-9]* \?\?\?\? 0FBFC8[ ]+movsw %ax, %ecx [ ]*[1-9][0-9]*[ ]+movsw %eax, %ecx [ ]*[1-9][0-9]*[ ]+movsw %rax, %ecx [ ]*[1-9][0-9]*[ ]* [ ]*[1-9][0-9]*[ ]+movsw %al, %rcx -[ ]*[1-9][0-9]*[ ]+movsw %ax, %rcx +[ ]*[1-9][0-9]* \?\?\?\? 480FBFC8[ ]+movsw %ax, %rcx [ ]*[1-9][0-9]*[ ]+movsw %eax, %rcx [ ]*[1-9][0-9]*[ ]+movsw %rax, %rcx [ ]*[1-9][0-9]*[ ]* @@ -241,6 +241,46 @@ [ ]*[1-9][0-9]*[ ]+movswq %eax, %rcx [ ]*[1-9][0-9]*[ ]+movswq %rax, %rcx [ ]*[1-9][0-9]*[ ]* +[ ]*[1-9][0-9]*[ ]+movsl %al, %cl +[ ]*[1-9][0-9]*[ ]+movsl %ax, %cl +[ ]*[1-9][0-9]*[ ]+movsl %eax, %cl +[ ]*[1-9][0-9]*[ ]+movsl %rax, %cl +[ ]*[1-9][0-9]*[ ]* +[ ]*[1-9][0-9]*[ ]+movsl %al, %cx +[ ]*[1-9][0-9]*[ ]+movsl %ax, %cx +[ ]*[1-9][0-9]*[ ]+movsl %eax, %cx +[ ]*[1-9][0-9]*[ ]+movsl %rax, %cx +[ ]*[1-9][0-9]*[ ]* +[ ]*[1-9][0-9]*[ ]+movsl %al, %ecx +[ ]*[1-9][0-9]*[ ]+movsl %ax, %ecx +[ ]*[1-9][0-9]*[ ]+movsl %eax, %ecx +[ ]*[1-9][0-9]*[ ]+movsl %rax, %ecx +[ ]*[1-9][0-9]*[ ]* +[ ]*[1-9][0-9]*[ ]+movsl %al, %rcx +[ ]*[1-9][0-9]*[ ]+movsl %ax, %rcx +[ ]*[1-9][0-9]* \?\?\?\? 4863C8[ ]+movsl %eax, %rcx +[ ]*[1-9][0-9]*[ ]+movsl %rax, %rcx +[ ]*[1-9][0-9]*[ ]* +[ ]*[1-9][0-9]*[ ]+movslq %al, %cl +[ ]*[1-9][0-9]*[ ]+movslq %ax, %cl +[ ]*[1-9][0-9]*[ ]+movslq %eax, %cl +[ ]*[1-9][0-9]*[ ]+movslq %rax, %cl +[ ]*[1-9][0-9]*[ ]* +[ ]*[1-9][0-9]*[ ]+movslq %al, %cx +[ ]*[1-9][0-9]*[ ]+movslq %ax, %cx +[ ]*[1-9][0-9]*[ ]+movslq %eax, %cx +[ ]*[1-9][0-9]*[ ]+movslq %rax, %cx +[ ]*[1-9][0-9]*[ ]* +[ ]*[1-9][0-9]*[ ]+movslq %al, %ecx +[ ]*[1-9][0-9]*[ ]+movslq %ax, %ecx +[ ]*[1-9][0-9]*[ ]+movslq %eax, %ecx +[ ]*[1-9][0-9]*[ ]+movslq %rax, %ecx +[ ]*[1-9][0-9]*[ ]* +[ ]*[1-9][0-9]*[ ]+movslq %al, %rcx +[ ]*[1-9][0-9]*[ ]+movslq %ax, %rcx +[ ]*[1-9][0-9]* \?\?\?\? 4863C8[ ]+movslq %eax, %rcx +[ ]*[1-9][0-9]*[ ]+movslq %rax, %rcx +[ ]*[1-9][0-9]*[ ]* [ ]*[1-9][0-9]*[ ]+movzx: [ ]*[1-9][0-9]*[ ]+movzx %al, %cl [ ]*[1-9][0-9]*[ ]+movzx %ax, %cl --- a/gas/testsuite/gas/i386/movx64.s +++ b/gas/testsuite/gas/i386/movx64.s @@ -241,6 +241,46 @@ movsx: movswq %eax, %rcx movswq %rax, %rcx + movsl %al, %cl + movsl %ax, %cl + movsl %eax, %cl + movsl %rax, %cl + + movsl %al, %cx + movsl %ax, %cx + movsl %eax, %cx + movsl %rax, %cx + + movsl %al, %ecx + movsl %ax, %ecx + movsl %eax, %ecx + movsl %rax, %ecx + + movsl %al, %rcx + movsl %ax, %rcx + movsl %eax, %rcx + movsl %rax, %rcx + + movslq %al, %cl + movslq %ax, %cl + movslq %eax, %cl + movslq %rax, %cl + + movslq %al, %cx + movslq %ax, %cx + movslq %eax, %cx + movslq %rax, %cx + + movslq %al, %ecx + movslq %ax, %ecx + movslq %eax, %ecx + movslq %rax, %ecx + + movslq %al, %rcx + movslq %ax, %rcx + movslq %eax, %rcx + movslq %rax, %rcx + movzx: movzx %al, %cl movzx %ax, %cl --- a/opcodes/i386-opc.tbl +++ b/opcodes/i386-opc.tbl @@ -172,14 +172,9 @@ mov, 0xf24, None, Cpu386|CpuNo64, D|RegM movbe, 0x0f38f0, None, CpuMovbe, D|Modrm|CheckRegSize|No_bSuf|No_sSuf, { Word|Dword|Qword|Unspecified|BaseIndex, Reg16|Reg32|Reg64 } // Move with sign extend. -// "movsbl" & "movsbw" must not be unified into "movsb" to avoid -// conflict with the "movs" string move instruction. -movsbl, 0xfbe, None, Cpu386, Modrm|NoSuf, { Reg8|Byte|Unspecified|BaseIndex, Reg32 } -movsbw, 0xfbe, None, Cpu386, Modrm|NoSuf, { Reg8|Byte|Unspecified|BaseIndex, Reg16 } -movswl, 0xfbf, None, Cpu386, Modrm|NoSuf, { Reg16|Word|Unspecified|BaseIndex, Reg32 } -movsbq, 0xfbe, None, Cpu64, Modrm|NoSuf|Size64, { Reg8|Byte|Unspecified|BaseIndex, Reg64 } -movswq, 0xfbf, None, Cpu64, Modrm|NoSuf|Size64, { Reg16|Word|Unspecified|BaseIndex, Reg64 } -movslq, 0x63, None, Cpu64, Modrm|NoSuf|Size64, { Reg32|Dword|Unspecified|BaseIndex, Reg64 } +movsb, 0xfbe, None, Cpu386, Modrm|No_bSuf|No_sSuf, { Reg8|Unspecified|BaseIndex, Reg16|Reg32|Reg64 } +movsw, 0xfbf, None, Cpu386, Modrm|No_bSuf|No_wSuf|No_sSuf, { Reg16|Unspecified|BaseIndex, Reg32|Reg64 } +movsl, 0x63, None, Cpu64, Modrm|No_bSuf|No_wSuf|No_lSuf|No_sSuf, { Reg32|Unspecified|BaseIndex, Reg64 } movsx, 0xfbe, None, Cpu386, W|Modrm|No_lSuf|No_sSuf|No_qSuf, { Reg8|Reg16|Unspecified|BaseIndex, Reg16|Reg32|Reg64 } movsx, 0x63, None, Cpu64, Modrm|No_bSuf|No_wSuf|No_sSuf|No_qSuf, { Reg32|Unspecified|BaseIndex, Reg32|Reg64 } movsxd, 0x63, None, Cpu64, Modrm|NoSuf, { Reg32|Unspecified|BaseIndex, Reg32|Reg64 }