From patchwork Fri Nov 4 10:53:52 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 15469 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:6687:0:0:0:0:0 with SMTP id l7csp318191wru; Fri, 4 Nov 2022 03:54:11 -0700 (PDT) X-Google-Smtp-Source: AMsMyM4utDGSnllGczMwKb2RWRb6TWdKvCJZTW/AM3Zv4H92Jvz567TvXxTjh4oP+k4DfgBEFfg0 X-Received: by 2002:a17:906:fd8a:b0:75d:c79a:47c8 with SMTP id xa10-20020a170906fd8a00b0075dc79a47c8mr33021485ejb.389.1667559251517; Fri, 04 Nov 2022 03:54:11 -0700 (PDT) Received: from sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id dd11-20020a1709069b8b00b0078e06df0d29si5024655ejc.705.2022.11.04.03.54.11 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 04 Nov 2022 03:54:11 -0700 (PDT) Received-SPF: pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; dkim=pass header.i=@sourceware.org header.s=default header.b=GWdeu2wI; arc=fail (signature failed); spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 2C51F3858285 for ; Fri, 4 Nov 2022 10:54:07 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 2C51F3858285 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1667559247; bh=1KVDGPvfEc/Sy7WOKItTxfoNkUIbnujkETs3syt8mp4=; h=Date:Subject:To:References:In-Reply-To:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=GWdeu2wIXOdMwdYo1AC8CASSvKLUUY+bnfnfSyouikVMGcFzFNScIqNem/GkucHVm oEUHiEsThkPTmC3VyfyYvAIwkmI8ukqRdvkleTNNXm2Iz44VE18LG3PQN5rn1AodZF UwoAxE0nRa/0YCyKy2yp1u9jFFXlLXIXr8vsITxk= X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-eopbgr60058.outbound.protection.outlook.com [40.107.6.58]) by sourceware.org (Postfix) with ESMTPS id B1A4B3858287 for ; Fri, 4 Nov 2022 10:53:56 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org B1A4B3858287 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=aebxWGf6FobohxYLIuKbCJv8pnauHsfaepI4r9uOvOcP13ZugmpBdRhgfpWAvMoS9gjteAxsKf7kXvWxVmmVIvDI+373HfZmrYwjmwfDcidVmwCX6WPOmX1syQxoXGuBdDVqVRMrmrCg3ofIS0jlUwaPobyQzmKP8aqD+4FDPqXfgsrdvIv9KLulRDm0Qk1YPrFnhSfzj80VcpMqao/zumpzVG73N70pRVvwb6vJtx0V8a7e6DS/MvjW+Vl78RpQo0SwFUMoIWHQBsIk+knCvV9LexoLGqK78eg+DRgH+MEfaIAsBp9qAoQE1CKibhofpGRS7mU2yuxsdDkxHgEtZA== 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=1KVDGPvfEc/Sy7WOKItTxfoNkUIbnujkETs3syt8mp4=; b=WesqQIyGOIK7NSY2ppaSZdkxv72eN6FvJDW4btAE8hsjSA/POC2HfRyldK1aRoyUn0TyE48gcZX6p/CJAt09RGPj/PbuR36kdbTNVXRpss0SMGn9O/y8XXZjR6OMvT0gax7XXu6RwiZ9sUjKkABnJdqAg25XAUcDAB0PrXGzY8KJrM4rqJsU+7P4zmayxaYeHiqIUMvhyqUUq5fvb5pzWjamj5SDbwCK8hEejkiwbtQvq+IugeFwPLsGFKF20ZslHPAknj2MwOTFuSSpb5PYmVbJNaHSFvYhOemRSRiXLiIPIH1ipmWUt+Yiv/1lokNLEWF6yXxZxzwgDULe0p0dXw== 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 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:53:54 +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:53:54 +0000 Message-ID: Date: Fri, 4 Nov 2022 11:53:52 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.4.1 Subject: [PATCH v6 6/7] x86: drop (now) stray IsString Content-Language: en-US To: Binutils References: <6d71dc80-91c8-7bc8-c57f-4f771ca59fab@suse.com> In-Reply-To: <6d71dc80-91c8-7bc8-c57f-4f771ca59fab@suse.com> X-ClientProxiedBy: FR2P281CA0030.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:14::17) 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: c1eb6cb3-7123-490d-f04e-08dabe52dd7f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 5J8w3vzjMOG0ci2KY3h8xQwxmajMrtL7QswrYyNSzu3w1V+32OYy5jGuG1gVUswcuOMkjjC+pK1Z4jABxpwnBu2i+C003tVOEWLfkRPyNypjetPCk7e7uRcI5uxcaeysu7WPlgBBy95AmZ88U6B0CsjjYDspqYSstNawqwpPWoaaTFk3bWpllCKfLb/z6TqS4vzRs3GvVw+sTXhvFsMA+Wx80E8kVNHdnk9bacYi02UKVC6JLgU6ya+92ZaMIcFZnTm39gRvjY2ftm3vSGzKbKICJyJLXcyfgJkHciYPQCFEZl8PclG9rXfAKqxRfZnUUnN7/2wf2ru+SAwVlD5/MPsKo4m15soiplO8ZyChRbnxpHnxT1oCjAUlGvjfmM1GlP7Q4f/rRFw66kwRk4zh6cMCLpK+VM5dLwaq0an8tvs3INAUAkoWufUy945Jq7UqRMPTsmKdavV8rAlQ5wCkQNLFHXxFfqGRaweygREYh8Rxffsaj6KUV137Gjy53hE8rLJll6nv9ivkI3y7IsjoWBlqf/vRLPuut/apvTxR+tDhy1Ox4jpAVmtRRaeWfwgr+Unu3vivEX0JCK2oqNDzsUvfX5n2eVTEizSkkpoF/W5V0hWuhuTbBp5lT/xJH+gOezCO8TQ8tW7fa0ZaHNgs+lblYX+xT3NQLk2bCT1U7JydXnkqcqjzXtckmAJ7vdM3ydMAogycPzBWVmsgeSvoeU0UNImLm6gcnrWj3irZONJ2fYN/NI7+4utsL5rQDIDL3OzpAZOlQtv/n/XP572P3Yq5VPzCewrqEIJjEkjQd+M= 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)(6029001)(396003)(366004)(346002)(376002)(136003)(39860400002)(451199015)(316002)(8676002)(6916009)(30864003)(86362001)(5660300002)(2906002)(38100700002)(31696002)(66476007)(66946007)(186003)(66556008)(2616005)(83380400001)(4326008)(36756003)(8936002)(41300700001)(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?q?1dARnIHrYZtbHNkMgleRVKdxVwWA?= =?utf-8?q?pdwCZagfvJ2mKE/Y95Fik3JQL3e62pQlewp8FUk+Nd1KsLnKYaO17COPpvOS7U3Bu?= =?utf-8?q?7UWAG62Q84gjYE4LMDB4egP/xz/IqAI1w/q4lfh3pvsLP8RsSbw+rz9HJHhkBsCnr?= =?utf-8?q?Z1qynTF7p5+DvyJ1UgjdxIGiA74bEnhGKPgDcDohR90K7d64mlS+f9A7lqf7I/+jW?= =?utf-8?q?/nOH3ZyIithQCk9i2PkGaXZ8Yl18mPR5WiuVxTruXEvkO/lXgh1PZpteriM6We3S5?= =?utf-8?q?/Bxi6uniSdJ4y50hiJKq5kRU2o0eFrbCNRtNqz9DizHYTaXPXSTXilqCDbxWIgrLZ?= =?utf-8?q?mcGle4AEEtpktUcqYvF20sQ5HEAc0b58AE3A9nS7kQC5uH7O4zySb44+eS6oqFv/7?= =?utf-8?q?+GHob44kke8c8mB+zYO/vXTJE8XdvDTVLYiIs4adhJCe1aLAjt9Lf05pH2VSk9Ep3?= =?utf-8?q?mX2wSRVDKp3y+bQfHNUAyD9Ij3F24HhYwhRVlyEme8cfj5wOklvv5e0JSRVd/0qie?= =?utf-8?q?oZpsXYJH+Gg7mbNun68cPLFrJNsuPdW40sG4zZV45Ii0JjefUVdVFBHpP+tgkoMqK?= =?utf-8?q?PsejZMDs77sVzcSHaoDJ/sWHX60dX78IPZEOb7ynIawebEMO29/E7er6rLh2PskBJ?= =?utf-8?q?KQjRWPWvYOTxjrht7/9icX3zyYtjJmq6Emsx2FJM2caIbCuoqoxWHYOzfR8hj2H2j?= =?utf-8?q?SBgaUhp0i4N0XtLZ74Ptr4m2vB7MfijupmhuAux/XebZH/IDtXID/J0pfg/WPFBrC?= =?utf-8?q?HTLS9sjkHU6zy2LqxsGb1kw18PpFwb4jzlpl7QtqJ9qOS9bjx/TUwGlyen7IRBAFo?= =?utf-8?q?1IjwfHKQP7vNCE27XicqkuDMMQf6hQJE7QU/IDDqXaDZUCNIlAu2WwOyyMMjKphcY?= =?utf-8?q?b2bXLammsrlNEMBmmG0qWORG00GXK9ROQ9IktGEZPwZDNoLDllIWxzuumzi9zq78c?= =?utf-8?q?bfbrekSBwx9EI9Hul4SIDdHQtZmxF0sJnddMsR9ahoAIz8dwdD6VS0ESDrK2vDfh2?= =?utf-8?q?vDf/Omufu0OuCwtMMkRROz8t8J6KrWsyKyDFh58oMD7HTsQ3aqUq/3d1pgTfXC5gS?= =?utf-8?q?GtT4YMD+WmPBQnDgFuJ54JvEnjqELg0A1ZSrCC8LtgKEPtmccS0VcORTDL2uQAY2L?= =?utf-8?q?K+wkfPCSgW3jsK71BRF80mlnUMlTIkxyQ7LQtjIciQtA8irdvNerjpdRpkqIwobRt?= =?utf-8?q?4hIH25JltiS7MABfYwhAye1AwzEofFKLi5NQsu3JKJ7zgxYs/fe/QcCnAkJ+JWHkL?= =?utf-8?q?fjTlylXbeSaoe8SACtTUqnsAiOZ7N9La+H3O7aqe1D9sXAkzM8d7D+svJz0cNhTUv?= =?utf-8?q?19aEIgINh71oSuSmhn0Vk3fsw2ZxTbKn6Zvet1LczJZKh9kUIPF2Sk1fdjfxuPZA3?= =?utf-8?q?WwkhzarKqei2rz2ibqjlZ5dEG4KjeJdN4p6A74mxu2rCqYBAJqUmb8816w21GhlJ7?= =?utf-8?q?4CYXKlnVsWcXG981Bkuoz0QL0uad49fX9Bz9WJvhTOf9XRRQc55Kedpr23NAMetaY?= =?utf-8?q?O1WHNwxlTRwJ?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: c1eb6cb3-7123-490d-f04e-08dabe52dd7f 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:53:54.1591 (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: e7YT5U7Xgo1DcIfLKguEi350J5OgqoJhJXSYZVNc4hqM2P8A9UC13L5xeIbJcS9GnefP8ideKOpP8aAeJmzLWg== 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 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-Patchwork-Original-From: Jan Beulich via Binutils From: Jan Beulich Reply-To: Jan Beulich Errors-To: binutils-bounces+ouuuleilei=gmail.com@sourceware.org Sender: "Binutils" X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1748562609852683732?= X-GMAIL-MSGID: =?utf-8?q?1748562609852683732?= While I question the original need for IsString on the PadLock insns, the need for them on the operand-less string insns has gone away with the removal of maybe_adjust_templates() and associated logic. Since i386_index_check() needs adjustment then anyway, take the opportunity and also simplify it, possible again as a result of said removal (plus the opcode template adjustments done here). --- v4: New. --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -11293,12 +11293,9 @@ i386_index_check (const char *operand_st { const char *kind = "base/index"; enum flag_code addr_mode = i386_addressing_mode (); - const insn_template *t = current_templates->start; + const insn_template *t = current_templates->end - 1; - if (t->opcode_modifier.isstring - && !t->cpu_flags.bitfield.cpupadlock - && (current_templates->end[-1].opcode_modifier.isstring - || i.mem_operands)) + if (t->opcode_modifier.isstring) { /* Memory operands of string insns are special in that they only allow a single register (rDI, rSI, or rBX) as their memory address. */ @@ -11315,14 +11312,12 @@ i386_index_check (const char *operand_st if (t->opcode_modifier.prefixok == PrefixRep) { - int es_op = current_templates->end[-1].opcode_modifier.isstring - - IS_STRING_ES_OP0; + int es_op = t->opcode_modifier.isstring - IS_STRING_ES_OP0; int op = 0; - if (!current_templates->end[-1].operand_types[0].bitfield.baseindex + if (!t->operand_types[0].bitfield.baseindex || ((!i.mem_operands != !intel_syntax) - && current_templates->end[-1].operand_types[1] - .bitfield.baseindex)) + && t->operand_types[1].bitfield.baseindex)) op = 1; expected_reg = (const reg_entry *) str_hash_find (reg_hash, @@ -11365,6 +11360,8 @@ i386_index_check (const char *operand_st } else { + t = current_templates->start; + if (addr_mode != CODE_16BIT) { /* 32-bit/64-bit checks. */ --- a/opcodes/i386-opc.tbl +++ b/opcodes/i386-opc.tbl @@ -483,37 +483,37 @@ loopne, 0xe0, None, Cpu64, JumpByte|No_b set, 0xf9, 0, Cpu386, Modrm|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { Reg8|Byte|Unspecified|BaseIndex } // String manipulation. -cmps, 0xa6, None, 0, W|No_sSuf|No_ldSuf|IsString|RepPrefixOk, {} +cmps, 0xa6, None, 0, W|No_sSuf|No_ldSuf|RepPrefixOk, {} cmps, 0xa6, None, 0, W|No_sSuf|No_ldSuf|IsStringEsOp0|RepPrefixOk, { Byte|Word|Dword|Qword|Unspecified|BaseIndex, Byte|Word|Dword|Qword|Unspecified|BaseIndex } -scmp, 0xa6, None, 0, W|No_sSuf|No_ldSuf|IsString|RepPrefixOk, {} +scmp, 0xa6, None, 0, W|No_sSuf|No_ldSuf|RepPrefixOk, {} scmp, 0xa6, None, 0, W|No_sSuf|No_ldSuf|IsStringEsOp0|RepPrefixOk, { Byte|Word|Dword|Qword|Unspecified|BaseIndex, Byte|Word|Dword|Qword|Unspecified|BaseIndex } -ins, 0x6c, None, Cpu186, W|No_sSuf|No_qSuf|No_ldSuf|IsString|RepPrefixOk, {} +ins, 0x6c, None, Cpu186, W|No_sSuf|No_qSuf|No_ldSuf|RepPrefixOk, {} ins, 0x6c, None, Cpu186, W|No_sSuf|No_qSuf|No_ldSuf|IsStringEsOp1|RepPrefixOk, { InOutPortReg, Byte|Word|Dword|Unspecified|BaseIndex } -outs, 0x6e, None, Cpu186, W|No_sSuf|No_qSuf|No_ldSuf|IsString|RepPrefixOk, {} +outs, 0x6e, None, Cpu186, W|No_sSuf|No_qSuf|No_ldSuf|RepPrefixOk, {} outs, 0x6e, None, Cpu186, W|No_sSuf|No_qSuf|No_ldSuf|IsString|RepPrefixOk, { Byte|Word|Dword|Unspecified|BaseIndex, InOutPortReg } -lods, 0xac, None, 0, W|No_sSuf|No_ldSuf|IsString|RepPrefixOk, {} +lods, 0xac, None, 0, W|No_sSuf|No_ldSuf|RepPrefixOk, {} lods, 0xac, None, 0, W|No_sSuf|No_ldSuf|IsString|RepPrefixOk, { Byte|Word|Dword|Qword|Unspecified|BaseIndex } lods, 0xac, None, 0, W|No_sSuf|No_ldSuf|IsString|RepPrefixOk, { Byte|Word|Dword|Qword|Unspecified|BaseIndex, Acc|Byte|Word|Dword|Qword } -slod, 0xac, None, 0, W|No_sSuf|No_ldSuf|IsString|RepPrefixOk, {} +slod, 0xac, None, 0, W|No_sSuf|No_ldSuf|RepPrefixOk, {} slod, 0xac, None, 0, W|No_sSuf|No_ldSuf|IsString|RepPrefixOk, { Byte|Word|Dword|Qword|Unspecified|BaseIndex } slod, 0xac, None, 0, W|No_sSuf|No_ldSuf|IsString|RepPrefixOk, { Byte|Word|Dword|Qword|Unspecified|BaseIndex, Acc|Byte|Word|Dword|Qword } -movs, 0xa4, None, 0, W|No_sSuf|No_ldSuf|IsString|RepPrefixOk, {} +movs, 0xa4, None, 0, W|No_sSuf|No_ldSuf|RepPrefixOk, {} movs, 0xa4, None, 0, W|No_sSuf|No_ldSuf|IsStringEsOp1|RepPrefixOk, { Byte|Word|Dword|Qword|Unspecified|BaseIndex, Byte|Word|Dword|Qword|Unspecified|BaseIndex } -smov, 0xa4, None, 0, W|No_sSuf|No_ldSuf|IsString|RepPrefixOk, {} +smov, 0xa4, None, 0, W|No_sSuf|No_ldSuf|RepPrefixOk, {} smov, 0xa4, None, 0, W|No_sSuf|No_ldSuf|IsStringEsOp1|RepPrefixOk, { Byte|Word|Dword|Qword|Unspecified|BaseIndex, Byte|Word|Dword|Qword|Unspecified|BaseIndex } -scas, 0xae, None, 0, W|No_sSuf|No_ldSuf|IsString|RepPrefixOk, {} +scas, 0xae, None, 0, W|No_sSuf|No_ldSuf|RepPrefixOk, {} scas, 0xae, None, 0, W|No_sSuf|No_ldSuf|IsStringEsOp0|RepPrefixOk, { Byte|Word|Dword|Qword|Unspecified|BaseIndex } scas, 0xae, None, 0, W|No_sSuf|No_ldSuf|IsStringEsOp0|RepPrefixOk, { Byte|Word|Dword|Qword|Unspecified|BaseIndex, Acc|Byte|Word|Dword|Qword } -ssca, 0xae, None, 0, W|No_sSuf|No_ldSuf|IsString|RepPrefixOk, {} +ssca, 0xae, None, 0, W|No_sSuf|No_ldSuf|RepPrefixOk, {} ssca, 0xae, None, 0, W|No_sSuf|No_ldSuf|IsStringEsOp0|RepPrefixOk, { Byte|Word|Dword|Qword|Unspecified|BaseIndex } ssca, 0xae, None, 0, W|No_sSuf|No_ldSuf|IsStringEsOp0|RepPrefixOk, { Byte|Word|Dword|Qword|Unspecified|BaseIndex, Acc|Byte|Word|Dword|Qword } -stos, 0xaa, None, 0, W|No_sSuf|No_ldSuf|IsString|RepPrefixOk, {} +stos, 0xaa, None, 0, W|No_sSuf|No_ldSuf|RepPrefixOk, {} stos, 0xaa, None, 0, W|No_sSuf|No_ldSuf|IsStringEsOp0|RepPrefixOk, { Byte|Word|Dword|Qword|Unspecified|BaseIndex } stos, 0xaa, None, 0, W|No_sSuf|No_ldSuf|IsStringEsOp1|RepPrefixOk, { Acc|Byte|Word|Dword|Qword, Byte|Word|Dword|Qword|Unspecified|BaseIndex } -ssto, 0xaa, None, 0, W|No_sSuf|No_ldSuf|IsString|RepPrefixOk, {} +ssto, 0xaa, None, 0, W|No_sSuf|No_ldSuf|RepPrefixOk, {} ssto, 0xaa, None, 0, W|No_sSuf|No_ldSuf|IsStringEsOp0|RepPrefixOk, { Byte|Word|Dword|Qword|Unspecified|BaseIndex } ssto, 0xaa, None, 0, W|No_sSuf|No_ldSuf|IsStringEsOp1|RepPrefixOk, { Acc|Byte|Word|Dword|Qword, Byte|Word|Dword|Qword|Unspecified|BaseIndex } -xlat, 0xd7, None, 0, No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|IsString, {} +xlat, 0xd7, None, 0, No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, {} xlat, 0xd7, None, 0, No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|IsString, { Byte|Unspecified|BaseIndex } // Bit manipulation. @@ -1968,24 +1968,24 @@ lzcnt, 0xf30fbd, None, CpuLZCNT, Modrm|C popcnt, 0xf30fb8, None, CpuPOPCNT, Modrm|CheckRegSize|No_bSuf|No_sSuf|No_ldSuf, { Reg16|Reg32|Reg64|Word|Dword|Qword|Unspecified|BaseIndex, Reg16|Reg32|Reg64 } // VIA PadLock extensions. -xstore-rng, 0xfa7c0, None, CpuPadLock, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|IsString|RepPrefixOk, {} -xcrypt-ecb, 0xf30fa7c8, None, CpuPadLock, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|IsString|RepPrefixOk, {} -xcrypt-cbc, 0xf30fa7d0, None, CpuPadLock, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|IsString|RepPrefixOk, {} -xcrypt-ctr, 0xf30fa7d8, None, CpuPadLock, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|IsString|RepPrefixOk, {} -xcrypt-cfb, 0xf30fa7e0, None, CpuPadLock, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|IsString|RepPrefixOk, {} -xcrypt-ofb, 0xf30fa7e8, None, CpuPadLock, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|IsString|RepPrefixOk, {} -montmul, 0xf30fa6c0, None, CpuPadLock, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|IsString|RepPrefixOk, {} -xsha1, 0xf30fa6c8, None, CpuPadLock, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|IsString|RepPrefixOk, {} -xsha256, 0xf30fa6d0, None, CpuPadLock, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|IsString|RepPrefixOk, {} +xstore-rng, 0xfa7c0, None, CpuPadLock, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|RepPrefixOk, {} +xcrypt-ecb, 0xf30fa7c8, None, CpuPadLock, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|RepPrefixOk, {} +xcrypt-cbc, 0xf30fa7d0, None, CpuPadLock, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|RepPrefixOk, {} +xcrypt-ctr, 0xf30fa7d8, None, CpuPadLock, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|RepPrefixOk, {} +xcrypt-cfb, 0xf30fa7e0, None, CpuPadLock, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|RepPrefixOk, {} +xcrypt-ofb, 0xf30fa7e8, None, CpuPadLock, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|RepPrefixOk, {} +montmul, 0xf30fa6c0, None, CpuPadLock, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|RepPrefixOk, {} +xsha1, 0xf30fa6c8, None, CpuPadLock, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|RepPrefixOk, {} +xsha256, 0xf30fa6d0, None, CpuPadLock, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|RepPrefixOk, {} // Aliases without hyphens. -xstorerng, 0xfa7c0, None, CpuPadLock, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|IsString|RepPrefixOk, {} -xcryptecb, 0xf30fa7c8, None, CpuPadLock, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|IsString|RepPrefixOk, {} -xcryptcbc, 0xf30fa7d0, None, CpuPadLock, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|IsString|RepPrefixOk, {} -xcryptctr, 0xf30fa7d8, None, CpuPadLock, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|IsString|RepPrefixOk, {} -xcryptcfb, 0xf30fa7e0, None, CpuPadLock, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|IsString|RepPrefixOk, {} -xcryptofb, 0xf30fa7e8, None, CpuPadLock, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|IsString|RepPrefixOk, {} +xstorerng, 0xfa7c0, None, CpuPadLock, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|RepPrefixOk, {} +xcryptecb, 0xf30fa7c8, None, CpuPadLock, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|RepPrefixOk, {} +xcryptcbc, 0xf30fa7d0, None, CpuPadLock, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|RepPrefixOk, {} +xcryptctr, 0xf30fa7d8, None, CpuPadLock, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|RepPrefixOk, {} +xcryptcfb, 0xf30fa7e0, None, CpuPadLock, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|RepPrefixOk, {} +xcryptofb, 0xf30fa7e8, None, CpuPadLock, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|RepPrefixOk, {} // Alias for xstore-rng. -xstore, 0xfa7c0, None, CpuPadLock, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|IsString|RepPrefixOk, {} +xstore, 0xfa7c0, None, CpuPadLock, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|RepPrefixOk, {} // Multy-precision Add Carry, rdseed instructions. adcx, 0x660f38f6, None, CpuADX, Modrm|CheckRegSize|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|No_ldSuf, { Reg32|Reg64|Unspecified|BaseIndex, Reg32|Reg64 }