From patchwork Thu Nov 24 08:57:56 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 25384 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:f944:0:0:0:0:0 with SMTP id q4csp3273435wrr; Thu, 24 Nov 2022 00:58:11 -0800 (PST) X-Google-Smtp-Source: AA0mqf5ccZwXTOrG7y/DZEhsk7bwo1yBFxh7pyy0dyYIhikM/LNimpIbk+liEESMUTMrTuw5pLWy X-Received: by 2002:a17:906:6c7:b0:78d:4061:5e1b with SMTP id v7-20020a17090606c700b0078d40615e1bmr18459701ejb.47.1669280291668; Thu, 24 Nov 2022 00:58:11 -0800 (PST) Received: from sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id ss28-20020a170907c01c00b007b790c183e0si107462ejc.290.2022.11.24.00.58.11 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Nov 2022 00:58:11 -0800 (PST) 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=LyEBkSlS; 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 46C48386EC0C for ; Thu, 24 Nov 2022 08:58:10 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 46C48386EC0C DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1669280290; bh=Xc4TxvL3MO22+PnZX4XfJRTDyDEIblYNaBGlmc9vLPg=; h=Date:Subject:To:Cc:References:In-Reply-To:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From:Reply-To:From; b=LyEBkSlSzJBWbwJY8Ro731KfxoQCb5a4VmcyhA2j8H+zbzGTVXmCc91KLClUQlMoQ AQDIMPlSgaLY9rW0DVKn3hlXOPEjKLNw7hPNLNRE6kDNIlqtEphGiye9xSmwK9Q8JO 8EpH1saASVMTGk0XIiR5lKU7vmvOmt89rH97FnGE= X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-eopbgr80083.outbound.protection.outlook.com [40.107.8.83]) by sourceware.org (Postfix) with ESMTPS id 182BE38432DA for ; Thu, 24 Nov 2022 08:58:00 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 182BE38432DA ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=oKIH7AFm5zgvmrB5ZhyIgCR/qeSg7U1mrLyfb/6fRJb2RvFS/GmRkaaz3yG3aK8C8D2qL05uCpa28OLOti3Ks5yjWodjoDC1TJ9fGGJljuMP/abpAq0XmuXd45IHWuE2QIQHfOxF6UHS1izJ5Pdsl9FpNjo+0VivQANWk6CkYl1gMdWgh9KpJQ9IwFLSf3LRmKOYqY7f+jAv5xEZC8R3FwiPUPRVIs95ZDK4UmYZAKlur7+R/69S9aKLl7O5LLEI5bEFpJmRmPYi2x2M4mIjJkwN8iozZ0SATk954ViOJePIxeQh1djk+FcK2RKjEndyuY70mOiNRWxiyZxc1OV97w== 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=Xc4TxvL3MO22+PnZX4XfJRTDyDEIblYNaBGlmc9vLPg=; b=JM5X9zpcpd9qr3xZ2lEjons7nZvEbp/oa4TEjDX43AKA7zzy5FWF4WEiIaDcLvTZZDi3/+D4h4uUPU4mg8CVUvkEnscWllzj8gjRD5TNSltTCZR81+hMLuO6UfLAQiKDjErIj4BR7zclBAoQCUhuhGT9O/AlwthX1SpfhVKYTTd7VAG4FeVL2zqk5CjiWWYw5+xvlHPY8wB7h+8e0HWQ+MqrY5UBtf2CLh5Ue5BqBI9KZUYskSuMOlgNWDUpAVj5aOiqb4QnMXBUng+nimxN02rn1ni8/mkk68ObvZDLinhSVmg3xyU7xEVmxVBadN+Z4XrA2bXHAw4j6hyDBw2Brw== 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 AM9PR04MB8242.eurprd04.prod.outlook.com (2603:10a6:20b:3ee::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5834.9; Thu, 24 Nov 2022 08:57:58 +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.019; Thu, 24 Nov 2022 08:57:58 +0000 Message-ID: <0ef86245-7f0d-ef4e-957a-4086eb54ef43@suse.com> Date: Thu, 24 Nov 2022 09:57:56 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.5.0 Subject: [PATCH 2/3] x86: drop FloatR Content-Language: en-US To: Binutils Cc: "H.J. Lu" References: In-Reply-To: X-ClientProxiedBy: FR3P281CA0195.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:a4::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_|AM9PR04MB8242:EE_ X-MS-Office365-Filtering-Correlation-Id: 23494df1-2d11-43a9-96bf-08dacdf9fba1 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: urw7decwIqY8ceUUFs8l4jUuPllCpo4Ry9/Eo20BncButnGNOuK+GGZGzn5pgoDLvBP2565gn7Nu1Iy7WGt85NxXiL188mx6keaxwg6zAWb9yCKcOBsYuR3c3FHqJ800QB+IOzM7nQvjb47gXkdBOb81jwuMLpiS8M4Em6FZJOw3lW3uvespdQXXre9rTVShUpyTXNAPNWoQ5StvwlMEJUFpRrhihbNzmKmaD22tt8aP84rp1G7pRdxXV9QzBEkxBnilGlsnQcwfBRbm9RChxe1HWZRhXf9HFXiaNvbPbksfygyi3oAzFVYsWjaVv8GQOGKO7HaEXsf38Vx0R4kcNaovU8SeqRpHBWPivLeqWeP3hjgjqIhMa4KgrqOx2OJYv1mmhP6XyMN88wTtq1viioGUY4qmWNie231gYhbm86Pk+E63VjvzaHUoXSqKTZMuWRlRf0q1NHn/d+cJ4dUXNKxjS4qVooqsOblh9IlTm1CsJxBZ/pJvYRXG2AExXl3SzUft6/JdVzMLXdU7snGRdukg8HfcPRwQganj5vh3cMod3lSes6IL7N4x5s17LtHtoL+fTOoXIgwizfAoqZjGcO63M/x0UfgBHHvV2+aAigERV1jcViCgiXTdBfnPkzqamBtsoxu5VMsdwVUaIGoyPQ/z2u8h66IxFZzQXr5JzY9zmE9m6Y2IAh9eT/VDvhI9eEusJbDJfm54/vvmeIT+dfHCNWH6EnkrgCJQ5VYR5mI= 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)(376002)(396003)(451199015)(31686004)(186003)(2906002)(83380400001)(2616005)(6506007)(478600001)(66476007)(86362001)(31696002)(36756003)(4326008)(26005)(8676002)(66946007)(6512007)(66556008)(5660300002)(8936002)(41300700001)(6486002)(6916009)(316002)(38100700002)(43740500002)(45980500001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?X/rAw+XDoDAcQCG9C9YJPjcIBjOt?= =?utf-8?q?ysD8eqBLL/q/KCgXuaQJ9Eh/WMLikQz9ZH252N9PqvirrALMgJ3zDTQl/KDdE/kMW?= =?utf-8?q?+r1F2W5pDcMkYx99fJdgjM70ffj6trvW+dsS/IVG130KxBSdk1yT0MXfZJ09Bfhav?= =?utf-8?q?upSclc74+sZsUFHn1O93GjPCcSlTr/dVLX3M4Zx0Z4T8VVGwvAiJPGSf6AuEkSGrm?= =?utf-8?q?hqF4YWAaxK4cvh4GcZpx1BZ8f0uqqOHWiJtoazTksSMC+6jlHDA1T54NeWOmRKJYE?= =?utf-8?q?hNtN7wfIe2lPxqO74WgB6/YSzCa3vphhC94e17RoShgXk1S8Y0ifbcVMNMT/kqDDJ?= =?utf-8?q?DgATLlfELR/IBv4rgYRT9xOnFglEjZzY/72yr+AD0K7U/giT6fGmWTOzVyBl1DxLB?= =?utf-8?q?rB8C6B9cglzs8BBUTsW75VR/HqL7724nbsK2ApBAAD0kjcy1IlH4sSJHfnSdM5y9L?= =?utf-8?q?e2QfYtki/SlELAwSo75tU+LHqJrxcu52KOj9YItQEB+oFcr1qZmla9OHO/QB7idNb?= =?utf-8?q?DUvaKnyY6gJieZg662w0njJM6twQ0ou5GXxszESsIOOuWG1B2y8Jq72XI0fD1PDpD?= =?utf-8?q?b7CKkPSN8kK4yKMyJ4zbhS7n5oVAX0elRKCH6wdBIov1g6JUs2tGg/3DsBGt2JIOJ?= =?utf-8?q?IzP0Ni/XIwLcYwJWsJvcL0b9K2L004c5Hg/a8yvRP84iFVw3+PmgLIOHHV0fY54XU?= =?utf-8?q?OzFTSd1xI0yQ8FbkOqeY6laNXJEnsKOhf9BnLM9BlPgLIsBQ2fLp8UCDUx94+gxCM?= =?utf-8?q?xQIekAFgGxzz6Zd4WBca4GKSgS14oJzRCF36q3+prNxqHanrKUqCL6eYXW8SJjFlj?= =?utf-8?q?PF5gEZDvxpn+WJK9QZEj5+eoNMLIxk4dMRHgsUD2+iUQQrqjlGE4BtZ/M7qE4yweW?= =?utf-8?q?ZfWsVUnTFo5UhaiHvIwqD6U0n2xUPFHFbyFqPpXphu0jgD+hOG0aHLk/PDPpicmV9?= =?utf-8?q?ZkpGnefm6aj25O1jfn+0ZWN7lg0a+4Cu4qlikT0hUV3ha7PWxwAjx24LvAEf7mAAL?= =?utf-8?q?4JQtTp39UMBfwgYldiJGwZZiX4fqoCd9RwFpIPUycY1N6DaOrWbLtQkSg76t+4OTv?= =?utf-8?q?HY/jPAHznrgjQIB6E0ERPG1CvW9RXQrx9+XKO3BWyz+EPvPILjwmGzBKGjaLV0rYM?= =?utf-8?q?UZmKttAR9CbWSexQrV1z6YfaFEW2jrShepW9+cg9aKV4n6vf5OicTddzopGv3JrkT?= =?utf-8?q?YItYOtXlQwu7q9GPYvJ6diXejnnt+JCPY3zhsGVZ0ntsEjAWREor2y4FMETwz1lFm?= =?utf-8?q?48RynV9S2UhUDCZLaR7hY6VEYjl0xIjCGRYlgDZsaes2ZJc0sv5e2hmmbZLpzRsgK?= =?utf-8?q?eefDrISh+svohWqJk+zQF1WgOog4Dr3LVHMgQtNoZRGdYo0/FdXaT4wLc4ZWmY9fk?= =?utf-8?q?3ZV5NYzmR9I2hR0mRQdiViuGOcxXs489C00E5uPj9YbiQ2TVZ7F91wDe61XJdIGCB?= =?utf-8?q?yvxpMBRbdizai6Ii7W6USOZFcTPprZTRPBAXwJdoWQzkFs0gVZIaCMTgMl7P46ve4?= =?utf-8?q?Yf/qbQZBq3ce?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 23494df1-2d11-43a9-96bf-08dacdf9fba1 X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6560.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Nov 2022 08:57:57.9193 (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: xUut4rhz9P9PNRQUxrHijB1KUAhyPD0v0AkI2CAYGIxJCbOzUarZa5XWyn/qXuE4SQia+s5HFIKf66NpsTY6UA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR04MB8242 X-Spam-Status: No, score=-3029.2 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?1750367250760076315?= X-GMAIL-MSGID: =?utf-8?q?1750367250760076315?= There are just 4 templates using it, which can be easily identified by other means, as D is set only on a very limited number of FPU templates. Also move the respective conditional out of the code path taken by all "reverse match" insns (it probably should have been this way already before, to avoid the one conditional in the common case). With this the templates which had FloatR dropped no longer differ from their AT&T syntax + mnemonic counterparts - the only difference is now which of the two would be recognized. For this, however, we don't need two templates - we can simply arrange the condition for setting Opcode_FloatR accordingly. --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -6800,12 +6800,18 @@ match_template (char mnem_suffix) specific_error = progress (i.error); continue; } - /* found_reverse_match holds which of D or FloatR + /* found_reverse_match holds which variant of D we've found. */ if (!t->opcode_modifier.d) found_reverse_match = 0; else if (operand_types[0].bitfield.tbyte) - found_reverse_match = Opcode_FloatD; + { + found_reverse_match = Opcode_FloatD; + /* FSUB{,R} and FDIV{,R} may need a 2nd bit flipped. */ + if ((t->base_opcode & 0x20) + && (intel_syntax || intel_mnemonic)) + found_reverse_match |= Opcode_FloatR; + } else if (t->opcode_modifier.vexsources) { found_reverse_match = Opcode_VexW; @@ -6820,8 +6826,6 @@ match_template (char mnem_suffix) ? Opcode_ExtD : Opcode_SIMD_IntD; else found_reverse_match = Opcode_D; - if (t->opcode_modifier.floatr) - found_reverse_match |= Opcode_FloatR; } else { --- a/opcodes/i386-gen.c +++ b/opcodes/i386-gen.c @@ -731,7 +731,6 @@ static bitfield opcode_modifiers[] = BITFIELD (Modrm), BITFIELD (Jump), BITFIELD (FloatMF), - BITFIELD (FloatR), BITFIELD (Size), BITFIELD (CheckRegSize), BITFIELD (OperandConstraint), --- a/opcodes/i386-opc.h +++ b/opcodes/i386-opc.h @@ -487,8 +487,6 @@ enum Jump, /* FP insn memory format bit, sized by 0x4 */ FloatMF, - /* src/dest swap for floats. */ - FloatR, /* needs size prefix if in 32-bit mode */ #define SIZE16 1 /* needs size prefix if in 16-bit mode */ @@ -743,7 +741,6 @@ typedef struct i386_opcode_modifier unsigned int modrm:1; unsigned int jump:3; unsigned int floatmf:1; - unsigned int floatr:1; unsigned int size:2; unsigned int checkregsize:1; unsigned int operandconstraint:4; --- a/opcodes/i386-opc.tbl +++ b/opcodes/i386-opc.tbl @@ -694,11 +694,10 @@ faddp, 0xdec0, None, CpuFP, NoSuf|Ugh, { // subtract fsub, 0xd8e0, None, CpuFP, NoSuf, { FloatReg } -fsub, 0xd8e0, None, CpuFP, D|NoSuf|ATTMnemonic|ATTSyntax, { FloatReg, FloatAcc } +fsub, 0xd8e0, None, CpuFP, D|NoSuf, { FloatReg, FloatAcc } // alias for fsubp fsub, 0xdee1, None, CpuFP, NoSuf|Ugh|ATTMnemonic|ATTSyntax, {} fsub, 0xdee9, None, CpuFP, NoSuf|Ugh|ATTMnemonic, {} -fsub, 0xd8e0, None, CpuFP, NoSuf|D|FloatR, { FloatReg, FloatAcc } fsub, 0xd8, 4, CpuFP, Modrm|FloatMF|No_bSuf|No_wSuf|No_qSuf|No_ldSuf, { Dword|Qword|Unspecified|BaseIndex } fisub, 0xde, 4, CpuFP, Modrm|FloatMF|No_bSuf|No_wSuf|No_qSuf|No_ldSuf, { Word|Dword|Unspecified|BaseIndex } @@ -711,11 +710,10 @@ fsubp, 0xdee9, None, CpuFP, NoSuf, {} // subtract reverse fsubr, 0xd8e8, None, CpuFP, NoSuf, { FloatReg } -fsubr, 0xd8e8, None, CpuFP, D|NoSuf|ATTMnemonic|ATTSyntax, { FloatReg, FloatAcc } +fsubr, 0xd8e8, None, CpuFP, D|NoSuf, { FloatReg, FloatAcc } // alias for fsubrp fsubr, 0xdee9, None, CpuFP, NoSuf|Ugh|ATTMnemonic|ATTSyntax, {} fsubr, 0xdee1, None, CpuFP, NoSuf|Ugh|ATTMnemonic, {} -fsubr, 0xd8e8, None, CpuFP, NoSuf|D|FloatR, { FloatReg, FloatAcc } fsubr, 0xd8, 5, CpuFP, Modrm|FloatMF|No_bSuf|No_wSuf|No_qSuf|No_ldSuf, { Dword|Qword|Unspecified|BaseIndex } fisubr, 0xde, 5, CpuFP, Modrm|FloatMF|No_bSuf|No_wSuf|No_qSuf|No_ldSuf, { Word|Dword|Unspecified|BaseIndex } @@ -741,11 +739,10 @@ fmulp, 0xdec8, None, CpuFP, NoSuf|Ugh, { // divide fdiv, 0xd8f0, None, CpuFP, NoSuf, { FloatReg } -fdiv, 0xd8f0, None, CpuFP, D|NoSuf|ATTMnemonic|ATTSyntax, { FloatReg, FloatAcc } +fdiv, 0xd8f0, None, CpuFP, D|NoSuf, { FloatReg, FloatAcc } // alias for fdivp fdiv, 0xdef1, None, CpuFP, NoSuf|Ugh|ATTMnemonic|ATTSyntax, {} fdiv, 0xdef9, None, CpuFP, NoSuf|Ugh|ATTMnemonic, {} -fdiv, 0xd8f0, None, CpuFP, NoSuf|D|FloatR, { FloatReg, FloatAcc } fdiv, 0xd8, 6, CpuFP, Modrm|FloatMF|No_bSuf|No_wSuf|No_qSuf|No_ldSuf, { Dword|Qword|Unspecified|BaseIndex } fidiv, 0xde, 6, CpuFP, Modrm|FloatMF|No_bSuf|No_wSuf|No_qSuf|No_ldSuf, { Word|Dword|Unspecified|BaseIndex } @@ -758,11 +755,10 @@ fdivp, 0xdef9, None, CpuFP, NoSuf, {} // divide reverse fdivr, 0xd8f8, None, CpuFP, NoSuf, { FloatReg } -fdivr, 0xd8f8, None, CpuFP, D|NoSuf|ATTMnemonic|ATTSyntax, { FloatReg, FloatAcc } +fdivr, 0xd8f8, None, CpuFP, D|NoSuf, { FloatReg, FloatAcc } // alias for fdivrp fdivr, 0xdef9, None, CpuFP, NoSuf|Ugh|ATTMnemonic|ATTSyntax, {} fdivr, 0xdef1, None, CpuFP, NoSuf|Ugh|ATTMnemonic, {} -fdivr, 0xd8f8, None, CpuFP, NoSuf|D|FloatR, { FloatReg, FloatAcc } fdivr, 0xd8, 7, CpuFP, Modrm|FloatMF|No_bSuf|No_wSuf|No_qSuf|No_ldSuf, { Dword|Qword|Unspecified|BaseIndex } fidivr, 0xde, 7, CpuFP, Modrm|FloatMF|No_bSuf|No_wSuf|No_qSuf|No_ldSuf, { Word|Dword|Unspecified|BaseIndex }