From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-eopbgr80057.outbound.protection.outlook.com [40.107.8.57]) by sourceware.org (Postfix) with ESMTPS id 10AC03858017 for ; Tue, 25 Oct 2022 07:29:23 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 10AC03858017 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=JajFqinp7cFoCo3QjcLP/HsDBJz2sezxQeiTsjr6V2hPnJeaPtODivnkeSz6FFsYtkrBEkiY4IRCjfGh5k7Vquq9aEtV3uCw8cHfBKT7aOPa6YPgu2y35xMQImzj1ULfSC5CNyXJ7/e+VHJy6GtIJGRBl5jnQBogJcYy08YXKsnjDeope+YkV9ybssLdXx/Uxs3LXObOvMQRnaijrGpFzvne4gXpDBh/I/fHQNhzaInBAWbl6gNnxBKL3DmGgfsPk6G+K7ZJSj8BVjgl1wU1JrZ3OuNblZRsKKzQ71YyfpWGD6TKA3Wx/PctvRXvukgSsT0SLb6Nq3row3Sl5YUBcg== 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=yVUs5FV0FKX+WcqIQtTMF1wsiYb/n2p55EkoRpGw2iA=; b=la+tVca1olQHB9w5UdLrTNaWYDwGELJos+1JHr1wbsKJRd6sq/4fVzGLKsbGvJO0ZHjECiZHi0EadVZr3UF5OjbwuT5z7Elsx60HJ1h0FhaMn0ZeV50JV9GmCNRTqPWgO86LaBLMG0Ae+YsZXOMlx5XRooczz8wPeGLeDKx/ENlipcv09sYS1rr2c8uk2p384os0KSihdMjClGmo3VIESboVs6Rg/Rw6m3wThx479la5I4KIsIN/oZ5l/0cNf21jUHk/OU5XTSfhec2hXxRJJPpihgOlEHODD4ZwZni9CB/Ohg0oAMVCbv+DpMzrkD1dxTwfVqv7RDZyX6ip67Adnw== 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=yVUs5FV0FKX+WcqIQtTMF1wsiYb/n2p55EkoRpGw2iA=; b=ISBNRsnxNrmZZIBsZwFjrbDnXjgJjXknompJqXCX6dRYbvPs2q1NyD/95HjtWXqauxE83G/cGXBExARqinVW9u4vXgiwx7rhYX2rif8BlCVvCtZXyYs0QDLr2QTcMxXJ2vlroQsbDF1D3xWfQVZ+Svb4WsjH51UokpAwscAo9GTZqM5XqWUiTEyN3u+Ow7b99DjKf80F9ytBG5SVaFxoWtmPeqbZYexpCtfepNxX++vhibM7hsZlcDKjl3UHoMHU39mb2iV1MYblgyf48rY7KNph3AGIO/5VtdB+XABqLgkho7DS4XIdvYXEW7j5MphB4WbKBtA/VMqqgC8nOCXx/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 DBBPR04MB7946.eurprd04.prod.outlook.com (2603:10a6:10:1ec::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5746.21; Tue, 25 Oct 2022 07:29:20 +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.5746.021; Tue, 25 Oct 2022 07:29:19 +0000 Message-ID: <06ff83d4-4633-a07b-70e5-a8e049981dd4@suse.com> Date: Tue, 25 Oct 2022 09:29:18 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.4.0 Subject: [PATCH v5 8/8] x86: further re-work insn/suffix recognition to also cover MOVSX Content-Language: en-US To: Binutils References: Cc: "H.J. Lu" From: Jan Beulich In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: FR0P281CA0081.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1e::7) To VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1PR04MB6560:EE_|DBBPR04MB7946:EE_ X-MS-Office365-Filtering-Correlation-Id: 6d338f27-4fd7-4b70-0df4-08dab65aa11b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: KAZ2iXDTqFgclBsNnBs5o3DmgDuHEmR0BI/kyLpW7WPfTvIr81Q3z10jT1pvAYUOQTUx9k2qkgjgDikaENSz1AsQK2IUB4TslmC6NEujPAShi8dYBtZGQqMaGKRBRV/QqSmXmNe8321kWHgz4K7qv6I46F4T+hWrRAbRl/PZ963qTEyYoYxszhP8PR0bRDL6kQCZLszgmEalavdKRkJDV14Lr/Xh1roBM3D1EEGROWyo9vhyaFhCiFrt36q0utmFNhI+Wg+KG/2vWTmrg74F0weDuTfA8JjWQtAhwn4pWZgFii1+R/0yxF2MIqQsy5pCB4jMnmFXi5ulNXtPUuew388xeutjHnq+FWCS0psya2xaT4MvZOnj1pFBjLQb3XoLUNzBRvz6lByXTx7x6nvbjqOCXJbO4OD+L2O+wU4Try/TMQ0UIxMMuN2FGaBvVY0t3wA+lWNvQuv1qY6owf5dKrBwxzqB6mVqawQQVznDrdOeETJWqeC9g5CRxuw2do8EtA2iIVHu6yqDkFC6GAJFel2nIWwa69v9edjAM8hKQRWRidNqL6vsemXP0Kld4RcRStrvXV+KIknyJtXiLFOl3zq9dwzSCmNEyJzyPOIHwSuIjzDzvCzreWOKNGZTPpie5Y1dgroRskK4WmvL2jBwK/JLnMm1G3gCuRvepIMgsLgtnZ954rGvLw/uC9NZmTw93XH798qymKqIaRwo5PGcTH9RGT96/7XVLlxAv1cYOu3WldTzedjjd6G98WV/+D4GwBaAAyaGbZR8x2cbeLaenq2B7htsJvK39SKG8e/zGXE= 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)(376002)(136003)(366004)(396003)(346002)(451199015)(8936002)(186003)(30864003)(5660300002)(2906002)(6512007)(26005)(2616005)(41300700001)(86362001)(38100700002)(31696002)(36756003)(66946007)(316002)(6916009)(6506007)(6486002)(478600001)(66899015)(31686004)(8676002)(66476007)(66556008)(4326008)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?WklocWtoL2ZsS0lsbTgxamhxRk5mZlBzR21VN21td0NJZWNBZmlIYnJobThx?= =?utf-8?B?Vys4Z25UbGVIQ0xWSEhMWVdaUjJzQVgvV09qdVhnb3FvNXgrU2dSQ1phNHV6?= =?utf-8?B?YUtMU0NJRmlUR0IzeDV5Q2gxY1ZzRFM0N2ZCNS9QdmlTS003b1N3bnlneEQ4?= =?utf-8?B?RmtFNXV5YkRCREh0cktYcVhxUDdIQ09BOXdWOUNUOWxybktEakpCL2l3cmpY?= =?utf-8?B?YzJYN0dFRGR2aWtuNDFiSmRtUEhnMlFtWEFVUVpFc2ZYdzlZdTVkY0w5Ly9B?= =?utf-8?B?TkNrUlllRmF2NkpIRmxQeG5ydGhkU2ZxWllhN2dJN3AwMHdFOTVWdEVJNWNr?= =?utf-8?B?YUR0QW1MNm9sQXQraVBtUDJnMU1STU1xci93c1p4N2hBcnRvc2xMSDVtUENr?= =?utf-8?B?M0RYNDgvZnozemI5bGFEM21ObDZoS0tDTW5ncHZ6OXpmTEdmUGpjblFheGY1?= =?utf-8?B?aTltRWlOcHZieVJYdEg3MVRVR0E3SzZCZW9pZGtjZ0N1Z1U0dTNxTUhSTXRj?= =?utf-8?B?eTZTRWhxb3I5NSs4MUJoK1NUSkk0a1FVOGtvQ3RVQUhHMlVMZmdUZDRZcStU?= =?utf-8?B?MnJoeUpoWCtaUHpLRnlrTmt1V25LTDV4T1o5TThlV1MyUElWZEdkbVNWdmpD?= =?utf-8?B?Z0I0cndSL2RncW1MQitzY0ZsM01jZzh5Qkw4bUZvZWpIUjczd0dDYVZwK0Ra?= =?utf-8?B?NVdSVFBIMktTL1gwSkNKT05BRFdnbUp5NkdNV0UyV0ZhekVRM25OZE1YM3E0?= =?utf-8?B?T2V1R1BoYXljcWo4S3c2cTF2emRCUWJkVlVmeWE2N0F5d0VVN1RBNlZiZXNH?= =?utf-8?B?T3VZMjhvWGtDYnhsMCtwM05CM1p3M0Z0Y3pERXhCc1lrK2FVVWNYcXNhRm05?= =?utf-8?B?L2VjRnhWRmpZVWFwZlQ0MUZ4VTVNbldVYSs3eDlMdUtyMTVDOXpYOVlwOGVZ?= =?utf-8?B?WDBNYS9xNXZVb0Y4Vm1wa2luWjByUFRmd3lwV3NyU2YvSm5aUUUvbHUzUnEz?= =?utf-8?B?UmNZdXBVZFRodGRsVUNGa2NjYnVDMExHN1NnY3h4a21ySXRVNWNVeTR0Tjhy?= =?utf-8?B?WHRwMEFDZHdnc2tkN1pZakJ2Tk5mNjQra1NVK1dlWW4zR3pzZTlPVk9xdE1V?= =?utf-8?B?bFNDU0RjNUtIUUVqcDZiMUdCMGN0ZFQ3RlEvM1FOa2xZcmZPclp4L1JaMWRx?= =?utf-8?B?Rzd5YUVGbjlzZEhFbUxCTVRHejJCSE1jb3dJd0VDUVFjRDlTQUtjR3FmQi94?= =?utf-8?B?dWNsazFKZWpSM1dsZUJYRTJ3NFh3blRjSXpBemJtY1Y4L2FQQWI3WU1pSmVr?= =?utf-8?B?aEtra3RyeVBUckk5ci92ZThOckYrUmdiNVZBcGliQTliVXBaZ21qVHhsUzBp?= =?utf-8?B?UHNraW44dmp3dzhTSHp1UmZ6eW1ORU5iK3h3YlNRQUNSTEhhWUdoeXJzL25O?= =?utf-8?B?SW5kNEtGaDJ4V3dIL01JaWtObFhka1hGcGxKZEloVHZzSjlZdWI5Z2NWN09z?= =?utf-8?B?SzkyQnFvTG8zWEtOM1lKbnhUZzVKVm9qaUV4N01SRElad2hMSnJwSkR0cmc0?= =?utf-8?B?U3VjNjlWZzI0eFkvQzFYVVQrc0JXRlRJdmF2VFZMVDFQRHdLWXdCZnlIRk01?= =?utf-8?B?ZEN1dXNLUWtJUFE1TmFjWlB6ak52SjU0RmFwMnNKYnhFeDR1NklJN0Z3L0pD?= =?utf-8?B?MVNRUHVKaHAvMlBCNURKaTNzMEdxbFVhWkg5ajUybkE3ZW5BM3Z1bzVYMnMw?= =?utf-8?B?c08vZE9iYmJlaXVCSDhMRUNUUjk5VHFwT0EwM1dHSFVIYXFQek94TmRxcUpl?= =?utf-8?B?TmpGakU5Q1pJeDd4NHlLMDVoNTM2RWFyc21iVDZjL2phZS93MW1obEdab2Jj?= =?utf-8?B?djY3S2FCajd3bE5JWjl1ZEllbENkOWRDUUo0ZEsrSzZhanE1NExldHJWNHN6?= =?utf-8?B?NUQwTytyQ2M0WG1hLzQ4QnJlbjNjNkEvQXNmRUx5OG9JVE1VKy8rTzdCZEhx?= =?utf-8?B?cC95YzJ2WWJGb05URHFvVDZzR1psL2Z2ZUIxL0JsYlEyQk5SYUJTM0JCRFpr?= =?utf-8?B?TlRmSGJlSlpBZTc0RHNlQmJjWEZKUWN2MXFCR2JydDFCaVNORU5Tc05udWdq?= =?utf-8?Q?X2EGVSiUs0kV4e5haZeEiRUSu?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6d338f27-4fd7-4b70-0df4-08dab65aa11b X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6560.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Oct 2022 07:29:19.4281 (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: ZdoDwbSvvBYt668pF4CQQWhzU+IdJ/i9J9AQEaKwveqkXIS5pJSBaX1CsU70kn3DlDTbHbqghgPLSuil34W6Ag== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR04MB7946 X-Spam-Status: No, score=-3029.6 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). --- v5: Split off from earlier patch, merged with prior patch dealing with just x86-64's MOVSL. --- 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" @@ -804,6 +805,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|Pass2, { Reg8|Unspecified|BaseIndex, Reg16|Reg32|Reg64 } +movsw, 0xfbf, None, Cpu386, Modrm|No_bSuf|No_wSuf|No_sSuf|No_ldSuf|Pass2, { Reg16|Unspecified|BaseIndex, Reg32|Reg64 } +movsl, 0x63, None, Cpu64, Modrm|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_ldSuf|Pass2, { 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 }