From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-eopbgr60053.outbound.protection.outlook.com [40.107.6.53]) by sourceware.org (Postfix) with ESMTPS id BC3713857C58 for ; Fri, 4 Nov 2022 10:54:39 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org BC3713857C58 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=fnekcqCACeyEV1inoy7bIKIYfWNS+I72KEy13QqGqLE4O3NPRoJiN3aVXoNbCmE/85KEb2SO+GOvD3ESBoCFLOwkT/1Jxs2DaKPm0y6KC5ZR3KQW9rAIed+62Aape5ECHMqSBrkj9znnRk/2USNwydQ+IuMpL/i11ux99ynFr1/YTHMEzehQoHnfLRpwOIVgTM0/PIVDvcN1MPLAxKXf5/UuNWv+/PJwFEtK/2az10Xtk9k0WFaMZO2MU+kBLrX49P5yFdtDgt0mwMex176Sx3wQvy59pRgGfd2XzrPVeGSBmfsS0woi7cP9ESYyXS4KGa78Ztn/ijODUOs+gfOxHw== 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=4Y3QRxI9Th/gtOvR8Jc+EbNoI1oUUhvs3u/4FbI14MM=; b=N6SXpIx+BiLCuUyFHoIrHALvey9johnCKT2WV6Bhfi9wr6g+40xQUnPofnl3Qtt5RD5OfU2QmT7gvy5zuRNeuKZW0ANzQvMqLXjF/OR3igKc1YGPiXoRSrN+l9UFj9l8zFqE5mQDluR5C3xt4Tpbiv7ctmCAb9YK3lsBxWwx9j2TMCOcDRgReOVV8UfJnvxejs3pv4UFGSbIQIdheDMoicBK66IPJgmveWUmnKLSxPRYOsD33ZzYvC1Bv50H3ohAU7a1Up2OQ+uXOuzKGLNjo4cfAs/1TbnMKApqFcc+2N50tlzhJ9MLynHvc6D/TwAzcH7MCKDpp3S6dLgI3ZdKVQ== 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=4Y3QRxI9Th/gtOvR8Jc+EbNoI1oUUhvs3u/4FbI14MM=; b=WvCS8psOx9IgQA9F4hcIDrH+YZruD4MVRFRhs6JFAJbgtJiM7LHJ0NmVUSVGldwrfojjmShBRKMCoCg1gB5Lhg/XQs1lyYtUiDJLTG5HyR6socadjFcuWCbrllr07PvxpDSCLfHi1l3Q7gXBTQydNIKc21u8g4IqxRq5CKmwr8cs8UhOvm8b2siHxGLCd7RcKAYh2M3CgufGNS3AbMk07sjDPif89g0i3bjkSqc9HMhOuL9b9v8tgP58mSB8FnXn5Hs280FybnNXf8tuKY6NIJSQ5VSOXB2mv3uiwgDTKlg68lWhcVBShA5eaXql/dgIrM7/pYW2ZkL/PI9haujL+A== 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 AS8PR04MB8881.eurprd04.prod.outlook.com (2603:10a6:20b:42c::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5791.20; Fri, 4 Nov 2022 10:54:32 +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.5791.022; Fri, 4 Nov 2022 10:54:32 +0000 Message-ID: <2baf6a9d-c1bf-660d-bbca-99b1604f5478@suse.com> Date: Fri, 4 Nov 2022 11:54:30 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.4.1 Subject: [PATCH v6 7/7] x86: further re-work insn/suffix recognition to also cover MOVSX Content-Language: en-US To: Binutils References: <6d71dc80-91c8-7bc8-c57f-4f771ca59fab@suse.com> Cc: "H.J. Lu" From: Jan Beulich In-Reply-To: <6d71dc80-91c8-7bc8-c57f-4f771ca59fab@suse.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: AM6PR0202CA0068.eurprd02.prod.outlook.com (2603:10a6:20b:3a::45) To VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1PR04MB6560:EE_|AS8PR04MB8881:EE_ X-MS-Office365-Filtering-Correlation-Id: 02fcd7ff-509b-4c3c-8591-08dabe52f423 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: TSA5K18C/QwLpZUNZB610gIAFtHPU/8JAlRYQsI3ddg7njXlHZiDS0ESlfQfDtsXETQJfem+e2M02PUbphHOAShTmLIA8a0i/a84mqwFd2dMYvZANsSUZWDJQseEBUBv4z9Snlcd6fa5WY+gJTD8mPNO92FiXBe+MWrD60YOpL6flYEPqf+1m37V4wDUjR3evh4NSkCnrnnCt6OhRbgMyA3SiA4pIHbL396cTd7+zkEN5z4/fLJW4JiDyHEbOV2QZHj+1CCf6rlqOz5GJ7/uNCRaLGVEO1OS0AHKOusWuRJ9IaEuyc7QY5BCjaPjCivkB72ysW3Xjss0vHN/teStPxH4DuF6MLrtmsBAmNwiUcoqStBOxyX5+OAI6NabzYW8GhFK7LSDnT0CLoD+7860POY4+cdFQVJ4J2Xr8svplRHT/nTtbaziTA405pJesO9qqKSa1GChaG2Wyz9UEYNsp/mhmXJ7jOFFf7bgANxBM0XSMRVTpb2HN7sIk1oMH4PDjHEf9UcZDiVJUhR46FrYZJdAY2I7WOuPKUifTzvRcZMM7NHrOEwUuvHw0/sPywRaX84Kdgjc6peMjXqShpASHEORGxwcwDO5TZr+uzODLIXxn3tuZwPiYUX0Cy90Nw/eYnBqCUBmUzKOewfKOi6mtdAGPvLnmdtvq9ggu7SG/HE5B6b1LsYlmXxXsujaxaU7ZrBXY4J6yu+1IzJeKzRdDdEypmNsJvFH4F3Ad8s25KfR3WZPieh6QWgaG3eqf9SH+VOYFciABPB2qV3V0e2TKWmm8CRrM91pzlHJfpSYMjQ= 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)(396003)(366004)(346002)(376002)(136003)(39860400002)(451199015)(316002)(8676002)(6916009)(30864003)(86362001)(5660300002)(2906002)(38100700002)(31696002)(66476007)(66946007)(186003)(66556008)(2616005)(4326008)(36756003)(8936002)(41300700001)(66899015)(6486002)(31686004)(6512007)(26005)(6506007)(478600001)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?YVl2MGxSZ0ZxaFN6cEVYc1FEeWFPd3RnVDZhaGJ4eVV4clZRSjVEVStXdWNT?= =?utf-8?B?U2R1Zy8vWlVWdm5Ub3FwZDZBZytYRW11QytkZ3k4dFlaUDFDcFg4SUFZaTg0?= =?utf-8?B?WGI3K2ovUFEyNENVQkhmNmFPcDFabXhMaVk4d2VSekRNNnFCOEZxUnFKai9s?= =?utf-8?B?eUx3TFJaaGRyTVh5MnIvMXl0Zm85VjNpb3QzQkJnQzZhYTh4NkhOQ2Fsb2xU?= =?utf-8?B?UDhWeE52YVVvVThVVG9wLzV0MjhTQUpIT0JXSFFhbXlmL1ZyNG5OZDEzVWFv?= =?utf-8?B?UGI2N3VlR2U5UXZYZUg1QUkyMmYvZFBhYUkwRmxza09wSW9hRUl1b292eFEx?= =?utf-8?B?dStXeTRuY2hpaVFSWkVEZ0xwSVA0TGcxM1poakRoNnJ0OU9zYklNNGRLTXpm?= =?utf-8?B?YXA0cEh1UUovTWp1UkFmMm4yYXNqQnYyR2dSTTkvWnRtUGRXcElsTFozeWNs?= =?utf-8?B?azZ5MkpTeEhHNy9YT1htVkdMRHF5VXhjUkJycm8zREtTbElyUldsSk03Z1dz?= =?utf-8?B?RTAyUm03ay9BVVJxNXJmb1FWWk0zcmJacHpxWmgwYU42OThrbmw4bzk2eFRo?= =?utf-8?B?MWZFdWt6R091TVMvNWlsc2VLYzNpTmN1Y0hQaVBsNW9YeWM1bU5qS3R2YXJP?= =?utf-8?B?Y284N2dPbEozKzY5bG94ZWpHYko1aWlvak16ZHpvSFBZeEFQZ01hblgrR1p5?= =?utf-8?B?Q2crTDFvbXByem9iWjhuSElnVVNVUUt0RnV2RmlzRk52aVh4eUxtUjdHYm9i?= =?utf-8?B?M0FlN0NmYkRMWFlWeFNFSEJlSjNnemkrR0RHdDdkTmQ4R0FkNlZpb1RtVWFq?= =?utf-8?B?UjBSMHlTczJZYVF2Q1dIZW02dW9uS0Vxc3JhczZNRThDU0svV3FYbXhMNkZ4?= =?utf-8?B?U01QSGtONm4wUEdEVHBROEtoV3JrK3FXSEhrcmYzRjNVc1cvY2VjQ2lXMHY0?= =?utf-8?B?emYxOUR4TnBaVmk1UmIzSlhjYkVwTlFPVG8vRzl3VC96VXFjQ0s3dVJJaXhY?= =?utf-8?B?UVZkSG5YK0RzVE1YM2xsSDh6OUJvSGxZKzIwWG5WQThaZE5haDRoc05MajZY?= =?utf-8?B?Y1EvZitkbkROdEFob0JQMit0eFhPWU5HbjZvSm5RaVkxYXNzc2daaFJIQW9C?= =?utf-8?B?WnljaytlK0RYWVBudkVSUUhFTGlRT0RCaXVPQ3lWbUEvK1JuSjZZQXcrdlJo?= =?utf-8?B?NlFuLzF1aU0rOVlhZWtzR3p6RGh3ejltYjhyZGtudFVPaUc4Uy9mNUd4TW1D?= =?utf-8?B?QUFlOXptMkRlajh3ODgyMjlMbE9ham51Rk40VU5ycEd3N0FNTmRUU0h1Q0Fr?= =?utf-8?B?bUQ4MjF0OVpqZGhTSnJVTkFyNkZqTER4N2FDOGovKzZDRXl2NjVQcFhwNXRi?= =?utf-8?B?NXhzSTRqTnN1T29zUUNrU2pPM002aFdVR3hRRWV2alBPR0h3Ykt3cDhvdU5l?= =?utf-8?B?ck4rTEF5K25ZNHNLU1lJM0VyZGZSR1VTQkFhejNaSUJkY0U0NGFOQjNmZkpX?= =?utf-8?B?eFlzV1JYWDZkSUhHN2JYMmlDRWt6QWxRYU9xN2tRUjE2ejhyMmNzZlZUTzdj?= =?utf-8?B?bElXQnA5a3NxaElQZkJ0L1ZJNEo2NHhxdjJMR2pmVFVpOTQxaUdsU29oYmpw?= =?utf-8?B?RGxjaFhqZkdPbE94ZlRaMHEzUUlLWTZaenJEamVhVklLdVhBM2NaeU9wNWVR?= =?utf-8?B?aGMxYkJVMDA2WFhZUnh5cVFsdFN1T1ZkZ0Q3Y25jVE0vZmVLNHRsQzR1WlNz?= =?utf-8?B?Qit1aFlaYlc2UnF2Ym9COE9CWUJMeG1yNW1BR3NXZzBwODVKa1htQlJ6TWd2?= =?utf-8?B?UlpObWt6K3RvUGllK1BQZzhMck5UOFlkajBERjdUQUVCbXpHQ005Qy8vYlZp?= =?utf-8?B?UkVkbVBTWDRQcEhHcTlFUGZYWmlLendUVWRnWGhEVWpXTmh2U0lyN0JoZStB?= =?utf-8?B?VVhhdGsySWQ3MEREb2RrQ2g3QjVadlJhdllzVjBUSkp4UTlGa1huR0RZeGx3?= =?utf-8?B?em5meDY0OVcxbUJDVzBuYWpjTFd6T2doalJUWnIzUmxTV3cxWmFxdmFueHpw?= =?utf-8?B?VXlsWVJvYUcyb295aXBTK0dmRVk2YWV5LzcrWGxNOEVFdDlDY25pNEdRMHJW?= =?utf-8?Q?9qsQobqwSoz/JDz+QuiMNffxs?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 02fcd7ff-509b-4c3c-8591-08dabe52f423 X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6560.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Nov 2022 10:54:32.0785 (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: gTMysYzzjyeLiEwFk0u23t2c52nw/a8HnTqO+H+onVBZi6gyLgtBipD5NsHX7YEIGXdGTp8jht48tKpiBV6AoQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8881 X-Spam-Status: No, score=-3029.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: 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 extend testsuite coverage) and to make may_need_pass2() cope. --- 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 @@ -4846,7 +4846,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" @@ -815,6 +816,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 @@ -162,14 +162,9 @@ mov, 0xf24, None, Cpu386|CpuNo64, D|RegM movbe, 0x0f38f0, None, CpuMovbe, D|Modrm|No_bSuf|No_sSuf|No_ldSuf, { 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|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { Reg8|Byte|Unspecified|BaseIndex, Reg32 } -movsbw, 0xfbe, None, Cpu386, Modrm|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { Reg8|Byte|Unspecified|BaseIndex, Reg16 } -movswl, 0xfbf, None, Cpu386, Modrm|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { Reg16|Word|Unspecified|BaseIndex, Reg32 } -movsbq, 0xfbe, None, Cpu64, Modrm|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|Size64, { Reg8|Byte|Unspecified|BaseIndex, Reg64 } -movswq, 0xfbf, None, Cpu64, Modrm|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|Size64, { Reg16|Word|Unspecified|BaseIndex, Reg64 } -movslq, 0x63, None, Cpu64, Modrm|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|Size64, { Reg32|Dword|Unspecified|BaseIndex, Reg64 } +movsb, 0xfbe, None, Cpu386, Modrm|No_bSuf|No_sSuf|No_ldSuf, { Reg8|Unspecified|BaseIndex, Reg16|Reg32|Reg64 } +movsw, 0xfbf, None, Cpu386, Modrm|No_bSuf|No_wSuf|No_sSuf|No_ldSuf, { Reg16|Unspecified|BaseIndex, Reg32|Reg64 } +movsl, 0x63, None, Cpu64, Modrm|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_ldSuf, { Reg32|Unspecified|BaseIndex, Reg64 } movsx, 0xfbe, None, Cpu386, W|Modrm|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { Reg8|Reg16|Unspecified|BaseIndex, Reg16|Reg32|Reg64 } movsx, 0x63, None, Cpu64, Modrm|No_bSuf|No_wSuf|No_sSuf|No_qSuf|No_ldSuf, { Reg32|Unspecified|BaseIndex, Reg32|Reg64 } movsxd, 0x63, None, Cpu64, Modrm|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { Reg32|Unspecified|BaseIndex, Reg32|Reg64 }