From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR02-VI1-obe.outbound.protection.outlook.com (mail-vi1eur02on2047.outbound.protection.outlook.com [40.107.241.47]) by sourceware.org (Postfix) with ESMTPS id 9DFBE3858D35 for ; Thu, 1 Dec 2022 09:20:28 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 9DFBE3858D35 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=SBKMBMjqknC887+/nCgbGsxr5hK2nNLFk4KbjTFeZa/G7rbrO8I1WJNDnm2JdX71yHNO7A41G9F+xsGcXD92j1yDREoiObvDB5YkAo/4kQn/D6drtcOanAfC+hMEktsvzeGwnLQbuehMAHJdqclsnPNREWj/M9Q5geEx/6Ka24iaurv5RrosUXNSuRk25yA8NLhBuIdVd+DPV+pYZupWtWZoRpZzi6smX6Cr3cnIaTF+uOTacE1fIWMDkCtJqO3xPEvtYCYifzGgE2ka0aGn9SJk0ohIDE1gCmqiRGI3z4+gK1xqbu/97APmC3TiXu8w/l2cQ8hpx3VBxjaYHp++BQ== 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=/G7ZRserjWzBJqDha/OLWMS5qlZMrJMA1g4aQ3caNFg=; b=Q5eiJhcfiXM+gNeJSpSbnFfTM9Qwye+gxoojKyLJ9QJT9nl6ZaOj6o2yc8WOu9P0MxMQA2zMGySvQTeX3acOj8LvdeJ9iEBhdwKfy6rENkw0jSWqNWeIEdFY1SqWaOiQMRRy1Z0pnpCNDOvn/WQlLxFn+btpbfeeQC1Md09FG1H5ikbvNQpb7Vj+G+o/fXOAQgb20DO5JZvxqmR9gz0df4NBai8G48U+3mee7tZye01F7qoaSZ6GKB9x2PgH947Rbm2QS4iIKuCjbBhfaoekrH3lgfSKkcIXMi/IyE2bfA5JjbBamp0fDVBTcyg7pCIPRK1US02wpafs91StdoNxXQ== 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=/G7ZRserjWzBJqDha/OLWMS5qlZMrJMA1g4aQ3caNFg=; b=SOWIwEYi60ei5Bg6JKFrcTtEAsVrfLyJWBw3o8sbM9/I9+CQ/k1MEbVCoBpJAKxh9ry+M3yeqpsBO+tUnoJ/0iMEUZOZTrroNlEDwJKhDnviDzAPmrCGx3mXAW/zySW+Bowthfk92Eak597fMfwzkwwt4pPT2m4VbfcL1yOTP9wXmXP1psI8QHIFMTKQK1B/BzgtUe4FT6jaYNJ693+MwvEhGYkpxJxN3i7pW7oL0KNWJKcEyFNgTPCTI8JA0ggKG8hMJglobG2czRY87Ivtsb2/B+eQ9xl1V6oWLR7/uWeeXAqKVxoJ193JveQhjIhEhsIrCUJD8+IctWMlTR9ITw== 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 AM9PR04MB7571.eurprd04.prod.outlook.com (2603:10a6:20b:2dd::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5880.8; Thu, 1 Dec 2022 09:20:25 +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; Thu, 1 Dec 2022 09:20:25 +0000 Message-ID: Date: Thu, 1 Dec 2022 10:20:24 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.5.0 Content-Language: en-US To: Binutils Cc: "H.J. Lu" From: Jan Beulich Subject: [PATCH] x86: drop most OPERAND_TYPE_* (and rework the rest) Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit 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_|AM9PR04MB7571:EE_ X-MS-Office365-Filtering-Correlation-Id: cf27856b-f7c0-4129-b0ce-08dad37d47a8 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 2lVzrh1MxoqpfvzEjGdWdUgS2dmOMkuk0PlVa1V08wx2tGapMZpcCxpG9apxHOaEixcSdnF7PR40WfJvhz0TrfoJQyYQ/YZScMlbdZbBwrKi617oTOA7ISR+cR4rNst9YlcjFgU6ngqL55YLg9zkvG4wqIEefC59u3XQb/5eSQ8Xg1Le/eiFyxNmXIU0Fj6M1ACjWw++n99XmokG/QV8Us5YAS6jm70mFztwecSkRIEG7W40EqY4JoWiYmWYO2QnVH5YQLnPdoo+08lNGvUgaArofCZ3Nyz6L2oAW4bFC0pHUj41uD9BOv/h3ZnceBjmbotK06xXoBmC6q7e74HgJMqdvf+J4bKroJdF1SFZ7dAQZeq3HDN6aPuxvZhzlgSWe5WCXuGrLuRWyCOqa/wnxold1rcY1kaJ13QOL7yzrtOI4Q2Fg5opB4dTt8H524k/VoCGNNQZN+6WQrNIuT3Byo+NIrthZfXCOmECHeIGNezjEjuzQsXlrRMkYsDVO1H+buY6i3hY3sthfdHmG6SeuqzCg2K5D1q6Y/pM1royBC1cbVb9Y/bYLIIqzblarqUgE23C+Wdn9rxRDSl9m6P6FOxuxRfakgCZur5DfflZ5hOpUp+YZAOBW0NPNeviFUoGahF/qzkI5y5MwqpnK2erfWBVRBgoZjx+KkZrwXXfErVywdZ8uqnF9kKyWCtaZhnIZnvjXptWMevc2R3WA1Fg5gFNxVnIhk+pim3YS847HyU= 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)(366004)(396003)(136003)(376002)(346002)(451199015)(86362001)(83380400001)(8936002)(31696002)(38100700002)(2906002)(30864003)(41300700001)(4326008)(5660300002)(6506007)(8676002)(6512007)(26005)(186003)(6916009)(66476007)(316002)(2616005)(66556008)(6486002)(31686004)(478600001)(66946007)(36756003)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?QktKUndHdEhhUW51dXBTaGdxS2JkdCtyZFdFZTliYWFyUGRLVnpxK3l3dkFO?= =?utf-8?B?WUhRVWVQVEFkdU1GSC9abzMveUFsUzF3ZjlXQk55MHZXWVM5enpaUG5qZmJr?= =?utf-8?B?czFUWVBUNkJBSEZ4M0dvaXdVNEJYc2pwdDdtS0R4aTJML29xMjVZYjliL3BH?= =?utf-8?B?S2NCWjEzWnk4SGhqQXNMcGhMU2huYjdGMkRuWmVzQmUwVFNYTnVaSEc2ZTdW?= =?utf-8?B?UlpVd0JaZ2VJbnBYRktuUUZSSHRwYi9QcTRWanhSZ0E5TzBNQTFHanBhK1JW?= =?utf-8?B?T0JFMFNDN3NybCsvYVFsVGZGU2FpS09RWU84c0RjNy94VFNEMUpabjRIRTZ2?= =?utf-8?B?M2krNVFrVHJibnNwODlWbk9TY29haUM2UlZ4Nk5OclZIVWpmbzVpcXhrNk9Y?= =?utf-8?B?SnIxbU9TU3cwVnl5Wnorai8vbjlORVNYTEVLTG4vVUl3bFF1cW1GL2d2K2VE?= =?utf-8?B?bVBPZUZWQWZRckxqL3RTV2hDajRzUWprMCtGQWtvZGZzeXQxU1RwSzJENERF?= =?utf-8?B?eWVJc05wMnMxd2dyVDFvdjd1dEVFTkFBbVl5WWRYamZCTlZmWmRkTzE4R3dl?= =?utf-8?B?bHAxN0EwWCtHMlU5UXMxQWFXUStMRlp4RzI5T3FXMW5jbHBtU3pORkt2QlNu?= =?utf-8?B?R2xRRVZxaGVNa2M4UHcxN0FoWUU3Z0Q2OWdrU2Qyejlpc21tYUhCM3BYZGla?= =?utf-8?B?NFpsUmFmN2lLUmtnbUlOTDZYWXRTMUYwVGZEVy9DVE9zYXg0NWM1WTlDMGIx?= =?utf-8?B?dm1lZlAwMU43NXFpZ05nOXZWaXN0S0dPanJTUndmVURkeGMydFR6Y0pQRHRm?= =?utf-8?B?NmJ5NTBqN3FJSFIxMDVKSitqbkMxcTUrcjFJNVZ5K2FoVDFQdHdKc25ab0tv?= =?utf-8?B?N05TQjRjZmkwM1ZOZGRUdEF2bE1DYStUSnh0NVM3UjhrUW9HdWZ4QW5LaUow?= =?utf-8?B?bWpZSTZxNE1JRHZzR1NIR2xPMzZuNGFjdkdXaitQSjBSbldTVzIwYWxRNHd5?= =?utf-8?B?SEJ5TFBTbVYxQThIUm5DUFgydTV3Zk5uZHFpRHNucTMwYTBGUFBXMDUwTHB3?= =?utf-8?B?bG0yemw5UzRqMlFTNjRXK0xyalRacXZNQ2lNalRvcVNPdW9sVHdCUzVEV3F5?= =?utf-8?B?bldFNEpFcTJ5bmFIRW9URjVHSEc4UHAvRzg1NHdtNUtWM2EyWER5T3kwc1dT?= =?utf-8?B?SU9ySFJ1MmhIN1RBOXRiSm12MDFyT29rSlQxN2VVMy82NVBlSFM1aFo1M2Jr?= =?utf-8?B?b3R3TGhodG5odjdEWVRwYW9OQ05DNVk2K1A2QlUrekdqS25MYjVGMDR3cm9j?= =?utf-8?B?QUtrVzJVeG1DVndkaTVWV0dLRFdkbEFZYVdIZnFoaFI3WmVhUWRlQUVwZEpC?= =?utf-8?B?NThIV3phNmMvQVpndlJPK2V4RTdjUlozQ2xINVdRemVBRGo2a2F6eFYxMk9y?= =?utf-8?B?dGdsV2I3Vm9aMlZNK1ZLRmliWkZoc2JQU2dibjNXSDdmZE84QVJoL2c5R3lH?= =?utf-8?B?WmhoVWJ0ZnErbElNNjVhOW5vdXlKQS9na2gzK1Vza2d3M2lobjNzcWZpZUxh?= =?utf-8?B?RnAyM0ZQYmFUeDA0N2I2RE15M1A2REh2ZzFkUFhTQlQ4Vk8yaTl0M3Nsc01i?= =?utf-8?B?VEtHbStqWS9QbUJobEtmZjNCckRHUnVydjZSUzdwVUdzQ2NqZVkwTkdValBM?= =?utf-8?B?MFJRS1kwMDIwSkIvWlhHS1phalVkWFRmaVMyZWMxU1hIWllDQVhMejBGZm5V?= =?utf-8?B?UnNIRTVRMmNLYmNPcW5vMTRGcTdzK2REcGJGYldONzZ4cHFIUW40dkcyTTBR?= =?utf-8?B?ZVpFZWFuM1ltYk9nSktENmFmSG90RlE0Vkw1c2g1VnFnQUhORlNGcjcwTm5q?= =?utf-8?B?eHJhTURndmlmNDQrL1M0bit1TjVFbjhWMlFzNFkrcUpDRGx2YjJTNHFjalV6?= =?utf-8?B?VWVQbFB6b1BMTEQrNDBwVm5selYzVFg5RnZ4YUNpeWZNTSsvbWJ5SnQ1bDc4?= =?utf-8?B?U0MyOW5zU3dWZUtKYUpQdVdubXdhUng3b3FkRGduM3UxL2VuWmVBV0RHaTZY?= =?utf-8?B?MzJ1M3BxMURRV1NXM1VCcHQvaE9aUTVOM0VGSG1wamtUenRIV3JpU2NkSzls?= =?utf-8?Q?3hAUMg487Qe8EgZzKNTgRf3m/?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: cf27856b-f7c0-4129-b0ce-08dad37d47a8 X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6560.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Dec 2022 09:20:25.4519 (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: DR6DclkJdwNNshnPFEkkMT1GJUC71He0fUkLQeqZ1rONfPc/84Fu6R6SFGhNglp+QR/+MDs3D0QMmKq7CebpCw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR04MB7571 X-Spam-Status: No, score=-3029.1 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: With the general use of C99 there's no need anymore to have i386-gen produce these. For more frequently used ones introduce local #define-s, while others are simply spelled out directly. While doing this move some static constants into more narrow scopes. Note that as a "side effect" this corrects type_names[]'es imm8s entry. --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -83,6 +83,8 @@ #define END_OF_INSN '\0' +#define OPERAND_TYPE_NONE { .bitfield = { .class = ClassNone } } + /* This matches the C -> StaticRounding alias in the opcode table. */ #define commutative staticrounding @@ -1952,15 +1954,9 @@ operand_type_xor (i386_operand_type x, i return x; } -static const i386_operand_type disp16_32 = OPERAND_TYPE_DISP16_32; -static const i386_operand_type anydisp = OPERAND_TYPE_ANYDISP; -static const i386_operand_type regxmm = OPERAND_TYPE_REGXMM; -static const i386_operand_type imm16 = OPERAND_TYPE_IMM16; -static const i386_operand_type imm32 = OPERAND_TYPE_IMM32; -static const i386_operand_type imm32s = OPERAND_TYPE_IMM32S; -static const i386_operand_type imm16_32 = OPERAND_TYPE_IMM16_32; -static const i386_operand_type imm16_32s = OPERAND_TYPE_IMM16_32S; -static const i386_operand_type imm16_32_32s = OPERAND_TYPE_IMM16_32_32S; +static const i386_operand_type anydisp = { + .bitfield = { .disp8 = 1, .disp16 = 1, .disp32 = 1, .disp64 = 1 } +}; enum operand_type { @@ -3261,40 +3257,40 @@ static struct type_name } const type_names[] = { - { OPERAND_TYPE_REG8, "r8" }, - { OPERAND_TYPE_REG16, "r16" }, - { OPERAND_TYPE_REG32, "r32" }, - { OPERAND_TYPE_REG64, "r64" }, - { OPERAND_TYPE_ACC8, "acc8" }, - { OPERAND_TYPE_ACC16, "acc16" }, - { OPERAND_TYPE_ACC32, "acc32" }, - { OPERAND_TYPE_ACC64, "acc64" }, - { OPERAND_TYPE_IMM8, "i8" }, - { OPERAND_TYPE_IMM8, "i8s" }, - { OPERAND_TYPE_IMM16, "i16" }, - { OPERAND_TYPE_IMM32, "i32" }, - { OPERAND_TYPE_IMM32S, "i32s" }, - { OPERAND_TYPE_IMM64, "i64" }, - { OPERAND_TYPE_IMM1, "i1" }, - { OPERAND_TYPE_BASEINDEX, "BaseIndex" }, - { OPERAND_TYPE_DISP8, "d8" }, - { OPERAND_TYPE_DISP16, "d16" }, - { OPERAND_TYPE_DISP32, "d32" }, - { OPERAND_TYPE_DISP64, "d64" }, - { OPERAND_TYPE_INOUTPORTREG, "InOutPortReg" }, - { OPERAND_TYPE_SHIFTCOUNT, "ShiftCount" }, - { OPERAND_TYPE_CONTROL, "control reg" }, - { OPERAND_TYPE_TEST, "test reg" }, - { OPERAND_TYPE_DEBUG, "debug reg" }, - { OPERAND_TYPE_FLOATREG, "FReg" }, - { OPERAND_TYPE_FLOATACC, "FAcc" }, - { OPERAND_TYPE_SREG, "SReg" }, - { OPERAND_TYPE_REGMMX, "rMMX" }, - { OPERAND_TYPE_REGXMM, "rXMM" }, - { OPERAND_TYPE_REGYMM, "rYMM" }, - { OPERAND_TYPE_REGZMM, "rZMM" }, - { OPERAND_TYPE_REGTMM, "rTMM" }, - { OPERAND_TYPE_REGMASK, "Mask reg" }, + { { .bitfield = { .class = Reg, .byte = 1 } }, "r8" }, + { { .bitfield = { .class = Reg, .word = 1 } }, "r16" }, + { { .bitfield = { .class = Reg, .dword = 1 } }, "r32" }, + { { .bitfield = { .class = Reg, .qword = 1 } }, "r64" }, + { { .bitfield = { .instance = Accum, .byte = 1 } }, "acc8" }, + { { .bitfield = { .instance = Accum, .word = 1 } }, "acc16" }, + { { .bitfield = { .instance = Accum, .dword = 1 } }, "acc32" }, + { { .bitfield = { .instance = Accum, .qword = 1 } }, "acc64" }, + { { .bitfield = { .imm8 = 1 } }, "i8" }, + { { .bitfield = { .imm8s = 1 } }, "i8s" }, + { { .bitfield = { .imm16 = 1 } }, "i16" }, + { { .bitfield = { .imm32 = 1 } }, "i32" }, + { { .bitfield = { .imm32s = 1 } }, "i32s" }, + { { .bitfield = { .imm64 = 1 } }, "i64" }, + { { .bitfield = { .imm1 = 1 } }, "i1" }, + { { .bitfield = { .baseindex = 1 } }, "BaseIndex" }, + { { .bitfield = { .disp8 = 1 } }, "d8" }, + { { .bitfield = { .disp16 = 1 } }, "d16" }, + { { .bitfield = { .disp32 = 1 } }, "d32" }, + { { .bitfield = { .disp64 = 1 } }, "d64" }, + { { .bitfield = { .instance = RegD, .word = 1 } }, "InOutPortReg" }, + { { .bitfield = { .instance = RegC, .byte = 1 } }, "ShiftCount" }, + { { .bitfield = { .class = RegCR } }, "control reg" }, + { { .bitfield = { .class = RegTR } }, "test reg" }, + { { .bitfield = { .class = RegDR } }, "debug reg" }, + { { .bitfield = { .class = Reg, .tbyte = 1 } }, "FReg" }, + { { .bitfield = { .instance = Accum, .tbyte = 1 } }, "FAcc" }, + { { .bitfield = { .class = SReg } }, "SReg" }, + { { .bitfield = { .class = RegMMX } }, "rMMX" }, + { { .bitfield = { .class = RegSIMD, .xmmword = 1 } }, "rXMM" }, + { { .bitfield = { .class = RegSIMD, .ymmword = 1 } }, "rYMM" }, + { { .bitfield = { .class = RegSIMD, .zmmword = 1 } }, "rZMM" }, + { { .bitfield = { .class = RegSIMD, .tmmword = 1 } }, "rTMM" }, + { { .bitfield = { .class = RegMask } }, "Mask reg" }, }; static void @@ -7699,6 +7695,19 @@ update_imm (unsigned int j) + overlap.bitfield.imm32s + overlap.bitfield.imm64 > 1) { + static const i386_operand_type imm16 = { .bitfield = { .imm16 = 1 } }; + static const i386_operand_type imm32 = { .bitfield = { .imm32 = 1 } }; + static const i386_operand_type imm32s = { .bitfield = { .imm32s = 1 } }; + static const i386_operand_type imm16_32 = { .bitfield = + { .imm16 = 1, .imm32 = 1 } + }; + static const i386_operand_type imm16_32s = { .bitfield = + { .imm16 = 1, .imm32s = 1 } + }; + static const i386_operand_type imm16_32_32s = { .bitfield = + { .imm16 = 1, .imm32 = 1, .imm32s = 1 } + }; + if (i.suffix) { i386_operand_type temp; @@ -7793,6 +7802,9 @@ process_operands (void) if (i.tm.opcode_modifier.sse2avx && i.tm.opcode_modifier.vexvvvv) { + static const i386_operand_type regxmm = { + .bitfield = { .class = RegSIMD, .xmmword = 1 } + }; unsigned int dupl = i.operands; unsigned int dest = dupl - 1; unsigned int j; @@ -10308,15 +10320,25 @@ lex_got (enum bfd_reloc_code_real *rel, } gotrel[] = { + +#define OPERAND_TYPE_IMM32_32S_DISP32 { .bitfield = \ + { .imm32 = 1, .imm32s = 1, .disp32 = 1 } } +#define OPERAND_TYPE_IMM32_32S_64_DISP32 { .bitfield = \ + { .imm32 = 1, .imm32s = 1, .imm64 = 1, .disp32 = 1 } } +#define OPERAND_TYPE_IMM32_32S_64_DISP32_64 { .bitfield = \ + { .imm32 = 1, .imm32s = 1, .imm64 = 1, .disp32 = 1, .disp64 = 1 } } +#define OPERAND_TYPE_IMM64_DISP64 { .bitfield = \ + { .imm64 = 1, .disp64 = 1 } } + #ifndef TE_PE #if defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF) { STRING_COMMA_LEN ("SIZE"), { BFD_RELOC_SIZE32, BFD_RELOC_SIZE32 }, - OPERAND_TYPE_IMM32_64, false }, + { .bitfield = { .imm32 = 1, .imm64 = 1 } }, false }, #endif { STRING_COMMA_LEN ("PLTOFF"), { _dummy_first_bfd_reloc_code_real, BFD_RELOC_X86_64_PLTOFF64 }, - OPERAND_TYPE_IMM64, true }, + { .bitfield = { .imm64 = 1 } }, true }, { STRING_COMMA_LEN ("PLT"), { BFD_RELOC_386_PLT32, BFD_RELOC_X86_64_PLT32 }, OPERAND_TYPE_IMM32_32S_DISP32, false }, @@ -10370,6 +10392,12 @@ lex_got (enum bfd_reloc_code_real *rel, BFD_RELOC_32_SECREL }, OPERAND_TYPE_IMM32_32S_64_DISP32_64, false }, #endif + +#undef OPERAND_TYPE_IMM32_32S_DISP32 +#undef OPERAND_TYPE_IMM32_32S_64_DISP32 +#undef OPERAND_TYPE_IMM32_32S_64_DISP32_64 +#undef OPERAND_TYPE_IMM64_DISP64 + }; char *cp; unsigned int j; @@ -11210,8 +11238,14 @@ i386_addressing_mode (void) if (flag_code != CODE_64BIT && (i.types[this_operand].bitfield.disp16 || i.types[this_operand].bitfield.disp32)) - i.types[this_operand] - = operand_type_xor (i.types[this_operand], disp16_32); + { + static const i386_operand_type disp16_32 = { + .bitfield = { .disp16 = 1, .disp32 = 1 } + }; + + i.types[this_operand] + = operand_type_xor (i.types[this_operand], disp16_32); + } } } } --- a/opcodes/i386-gen.c +++ b/opcodes/i386-gen.c @@ -477,102 +477,6 @@ static initializer cpu_flag_init[] = "CpuRAO_INT"}, }; -static initializer operand_type_init[] = -{ - { "OPERAND_TYPE_NONE", - "0" }, - { "OPERAND_TYPE_REG8", - "Class=Reg|Byte" }, - { "OPERAND_TYPE_REG16", - "Class=Reg|Word" }, - { "OPERAND_TYPE_REG32", - "Class=Reg|Dword" }, - { "OPERAND_TYPE_REG64", - "Class=Reg|Qword" }, - { "OPERAND_TYPE_IMM1", - "Imm1" }, - { "OPERAND_TYPE_IMM8", - "Imm8" }, - { "OPERAND_TYPE_IMM8S", - "Imm8S" }, - { "OPERAND_TYPE_IMM16", - "Imm16" }, - { "OPERAND_TYPE_IMM32", - "Imm32" }, - { "OPERAND_TYPE_IMM32S", - "Imm32S" }, - { "OPERAND_TYPE_IMM64", - "Imm64" }, - { "OPERAND_TYPE_BASEINDEX", - "BaseIndex" }, - { "OPERAND_TYPE_DISP8", - "Disp8" }, - { "OPERAND_TYPE_DISP16", - "Disp16" }, - { "OPERAND_TYPE_DISP32", - "Disp32" }, - { "OPERAND_TYPE_DISP64", - "Disp64" }, - { "OPERAND_TYPE_INOUTPORTREG", - "Instance=RegD|Word" }, - { "OPERAND_TYPE_SHIFTCOUNT", - "Instance=RegC|Byte" }, - { "OPERAND_TYPE_CONTROL", - "Class=RegCR" }, - { "OPERAND_TYPE_TEST", - "Class=RegTR" }, - { "OPERAND_TYPE_DEBUG", - "Class=RegDR" }, - { "OPERAND_TYPE_FLOATREG", - "Class=Reg|Tbyte" }, - { "OPERAND_TYPE_FLOATACC", - "Instance=Accum|Tbyte" }, - { "OPERAND_TYPE_SREG", - "Class=SReg" }, - { "OPERAND_TYPE_REGMMX", - "Class=RegMMX" }, - { "OPERAND_TYPE_REGXMM", - "Class=RegSIMD|Xmmword" }, - { "OPERAND_TYPE_REGYMM", - "Class=RegSIMD|Ymmword" }, - { "OPERAND_TYPE_REGZMM", - "Class=RegSIMD|Zmmword" }, - { "OPERAND_TYPE_REGTMM", - "Class=RegSIMD|Tmmword" }, - { "OPERAND_TYPE_REGMASK", - "Class=RegMask" }, - { "OPERAND_TYPE_REGBND", - "Class=RegBND" }, - { "OPERAND_TYPE_ACC8", - "Instance=Accum|Byte" }, - { "OPERAND_TYPE_ACC16", - "Instance=Accum|Word" }, - { "OPERAND_TYPE_ACC32", - "Instance=Accum|Dword" }, - { "OPERAND_TYPE_ACC64", - "Instance=Accum|Qword" }, - { "OPERAND_TYPE_DISP16_32", - "Disp16|Disp32" }, - { "OPERAND_TYPE_ANYDISP", - "Disp8|Disp16|Disp32|Disp64" }, - { "OPERAND_TYPE_IMM16_32", - "Imm16|Imm32" }, - { "OPERAND_TYPE_IMM16_32S", - "Imm16|Imm32S" }, - { "OPERAND_TYPE_IMM16_32_32S", - "Imm16|Imm32|Imm32S" }, - { "OPERAND_TYPE_IMM32_64", - "Imm32|Imm64" }, - { "OPERAND_TYPE_IMM32_32S_DISP32", - "Imm32|Imm32S|Disp32" }, - { "OPERAND_TYPE_IMM64_DISP64", - "Imm64|Disp64" }, - { "OPERAND_TYPE_IMM32_32S_64_DISP32", - "Imm32|Imm32S|Imm64|Disp32" }, - { "OPERAND_TYPE_IMM32_32S_64_DISP32_64", - "Imm32|Imm32S|Imm64|Disp32|Disp64" }, -}; - typedef struct bitfield { int position; @@ -2031,13 +1935,6 @@ process_i386_initializers (void) free (init); } - for (i = 0; i < ARRAY_SIZE (operand_type_init); i++) - { - fprintf (fp, "\n\n#define %s \\\n ", operand_type_init[i].name); - init = xstrdup (operand_type_init[i].init); - process_i386_operand_type (fp, init, stage_macros, " ", -1); - free (init); - } fprintf (fp, "\n"); fclose (fp);