From patchwork Sat Oct 22 12:55:16 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexey Lapshin X-Patchwork-Id: 7885 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:4242:0:0:0:0:0 with SMTP id s2csp1192263wrr; Sat, 22 Oct 2022 05:55:32 -0700 (PDT) X-Google-Smtp-Source: AMsMyM6fgEynQOuHkt/xJOhMiT5W3bvje29KAbVycNHFUvX00/uypy9hpf7QYYHgfnPxI1jMdtR5 X-Received: by 2002:a05:6402:28a1:b0:458:81c0:a379 with SMTP id eg33-20020a05640228a100b0045881c0a379mr22107576edb.388.1666443332210; Sat, 22 Oct 2022 05:55:32 -0700 (PDT) Received: from sourceware.org (server2.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id hc32-20020a17090716a000b0078df3bd80b9si22181364ejc.46.2022.10.22.05.55.31 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 22 Oct 2022 05:55:32 -0700 (PDT) Received-SPF: pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 8.43.85.97 as permitted sender) client-ip=8.43.85.97; Authentication-Results: mx.google.com; dkim=pass header.i=@sourceware.org header.s=default header.b="T/k58oF8"; arc=fail (signature failed); spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 8.43.85.97 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 165AC3858006 for ; Sat, 22 Oct 2022 12:55:30 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 165AC3858006 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1666443330; bh=erU9NDqwv0vYoXx+31JduNxJmd/2I0fK4nQuaGhWCgU=; h=To:Subject:Date:References:In-Reply-To:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=T/k58oF8HsObe24AbFr+kMnIVwU/rg+TeXbqXj1F94zUXSTG7frOrbF4/MN/CH/ne OLAK4Gqkke2AQ9gpx0LeIyljEcaRcYvIjUTxjhlXv3UB50Zlm82NeIdhoY+4bB+vf0 xb+FqEFWomKMx6yWZB9Pmkg0CBGnn8Ni6RZAQ5SU= X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from APC01-TYZ-obe.outbound.protection.outlook.com (mail-tyzapc01on2104.outbound.protection.outlook.com [40.107.117.104]) by sourceware.org (Postfix) with ESMTPS id BF3C638582B7 for ; Sat, 22 Oct 2022 12:55:20 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org BF3C638582B7 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=obJK09wF1f5ySay+VapxoMN+R5Jm29/zugpSXNHlFARIQCIKd0TlbSDP8r1/sMs2YgTl3KVVeq6a06VAxnaSFUlt9VZegz7+uw+FEQromw3utT7rKw0YHnOz8vXuOX6n74sn+AlaElGzyDjtRnigTrmdU7hQ36rgjHW4gBia4U6gxaRzHVdWJvG7Z+BqjPJYHoc9XNvBepSPKkd9AI3fq4UUpC0qb0+lEP5sSAJaCDIolWaWJqDIDYIqO3+njzo73uNIrOIN5CjVDUAxANkdyV/OtNn5LlJ44r10r1QKOFXqWPCNOjYuEmce/IDwCtWNHcaFtJsSZc78xfF/WMYcFw== 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=erU9NDqwv0vYoXx+31JduNxJmd/2I0fK4nQuaGhWCgU=; b=Nr5T3cgu1L5YdFlLvqQROZLIZ4WvTW9StmbtQgToIYPnwo5sUT59GuNDt4G0Kai1roM8l7rYM3SMcp3m/TCNUjBcVcZSozdN2Mr9xGyuOxy8miVbCY780ednPfznOVtScCFwKxACw+zL6eFKj+oyO0sAL6ouV+nAx+x1Uo8vZoT1LmEDKtjODGWD6blbrDMn/UHLLzRFf4IIUumnqVSKKh7sXsUFT8e/mPapiaQ3/4Ef4ewZt9f1UDZvX8ASPsj3YYJbhH/PV4+LZE7CkEWVfSfVUxMuT9X7HAwwlLqJoVuQxTdqqmIs9WdYK9cWg6Vm7hWioO+yU7Y5yT1D+I+6lg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=espressif.com; dmarc=pass action=none header.from=espressif.com; dkim=pass header.d=espressif.com; arc=none Received: from TYZPR04MB5736.apcprd04.prod.outlook.com (2603:1096:400:1fa::7) by SEYPR04MB5908.apcprd04.prod.outlook.com (2603:1096:101:68::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5723.35; Sat, 22 Oct 2022 12:55:16 +0000 Received: from TYZPR04MB5736.apcprd04.prod.outlook.com ([fe80::e64d:5c85:a83c:5898]) by TYZPR04MB5736.apcprd04.prod.outlook.com ([fe80::e64d:5c85:a83c:5898%4]) with mapi id 15.20.5723.032; Sat, 22 Oct 2022 12:55:16 +0000 To: "binutils@sourceware.org" Subject: [PATCH 2/5] gas: xtensa: add endianness, loops, booleans options Thread-Topic: [PATCH 2/5] gas: xtensa: add endianness, loops, booleans options Thread-Index: AQHY5hWIkZOfNNG/Lk+eb8T8PS0BHQ== Date: Sat, 22 Oct 2022 12:55:16 +0000 Message-ID: <63f2699e6ef3e6d1ca415a6ed1187d4f64297521.camel@espressif.com> References: <94fd668465b77e94f3c000982c694e7da8f828f1.camel@espressif.com> In-Reply-To: <94fd668465b77e94f3c000982c694e7da8f828f1.camel@espressif.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: TYZPR04MB5736:EE_|SEYPR04MB5908:EE_ x-ms-office365-filtering-correlation-id: df9f6889-8bdf-44cc-8913-08dab42cab02 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: i3aDM9IYViDO5Gfdde4jtu2Qzr/gfqKoF1lAUVyMWOTsjtel1eBbwJOzJ0vdvvYi5ySSvU2/kgiGseZh8bqMim+YskGw1GsuT+qp715dXLkpY8lNqYyCqnUhca6WDCYcchY1EwXigrHFgl5yDtaiDOLa/gko2q98yxjlp1ye/VoZ76cyRw662eMHevC++iSAYJR6/ewKo9sM88SKatzinaIs+ib34w8erl8JK0UnWPS88osSKliQauDZNVvSACSEeQ16Qu3gBOLLltewGsNWXXX8J5Za91cWGcfFC0S3JSqwknXy0uUgeq8fJjs4OwEtV7l9EYv5gC+h6PBjWqDIpPO7zrW0ApXzswJ3hV7wejm2zRepFK58Wcsa3XxK4Wc8VGDXJceKHxWLuOAwnwxBOZfNyppK9HTo1yYqq9zbnqXej1RQphqKwkCibQByBTS7nw0onmmfq+tLJ5yXnl7hRlbdKES5+//SHNsYCX16+VCQSWDDE39FNCUQvht47m58aXR4+E+BuHSDVjOtQYuXX0Wl+XlN3mpu0X3blCtJUeisyMZDbX6ySfGUB7C3/RYyLgN9AdmQ37Z6u/x7ce4Cy3gjYYTsONT0CKgT5Mbhhx67m3A1iZknKMEl60ufSaH+5LrS9kQsebHrxJgo+BIi0pQsloz/Iq6PbvWsfM6nZQGmvLfeaSwDmfZH7n9Ju46O2F8uZLFTBEJLfcrUaO2t68VuAduwenope7vy8nVdovOA82BrrlwtsHHYNChWOBpAKKP0mTBRlqXVU6QUWjc6kQ== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:TYZPR04MB5736.apcprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230022)(4636009)(376002)(39840400004)(136003)(366004)(396003)(346002)(451199015)(91956017)(2906002)(107886003)(8676002)(38070700005)(5660300002)(76116006)(4326008)(66476007)(66446008)(6506007)(122000001)(54906003)(66556008)(6916009)(38100700002)(64756008)(66946007)(86362001)(83380400001)(6512007)(8936002)(26005)(36756003)(41300700001)(186003)(2616005)(6486002)(44832011)(478600001)(316002)(71200400001); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?q?xGzuTooIWfK8PNMQ7gTLuFe2oyQZ?= =?utf-8?q?Yz4MhAPLCj9Ac7oYcPitosw/96UKPzbAxZWdH/PeKwoNrR6oBUk1LqjtU9KHWkTVZ?= =?utf-8?q?snjhx2K8bDzL3vHRoCadOkzu10pCC8KD6eI9qIfe77gkxI5nx4WM+xnTa7eEd9p3H?= =?utf-8?q?tWhPt4oGM4duDZJbgWVhgS5Xhm2rQFSD8zy9TVdK7TVnBftWfcmEZhT2tp0eyWQfg?= =?utf-8?q?KTHjkmowvkttcsLgcMgi8pNBGyLjrqVYl2o6AVVRZJWnkmi5BLVzU0dZz+632I+GK?= =?utf-8?q?z+WErkBBXpilNWDClNVSM9NhRAYlTZ+YR7pSIY9BjCB5fVTGOhX8X3FNfVFAw/NR7?= =?utf-8?q?c68HUYk635GQ5u7fVGnnc75zwDrGcqpBiuI2i+E4V8JOPqzV9saQLDOQ7Hk/JsO8a?= =?utf-8?q?thCIJW+kF5cl+b01VHP4hG41Dt0VCrpB3R/ankPAG5qP7/bsATlJA3koqbrkzx14M?= =?utf-8?q?DUrG84I6npPGA0Db0XjK0Cjyv0hY3N9jmwa7gu7szYzs3gN5258tGbdyblY/aI5lz?= =?utf-8?q?Vo6PBBSKqGW9QiXcU0p7KgcrJyIyTWKw/cIxuxNQ75QUpcTN1PVsvmrO3EWFEfX9Y?= =?utf-8?q?Jx6qFu1CWf91QycJyrfhhTpEttMU7fIDRlbPk1fi9GbHsAzhcPn5mwuk9suHsbpoS?= =?utf-8?q?q56H6eIePek7Vu8piNDzI8GtStEMZzVWeWDQ9bjFDGJKBe7XDVH1kaE9oD0wrpFCA?= =?utf-8?q?fUHx9+x00mpSzxOE3MPQtgn+4n6VHKQSfJ2nbFZJgql/C2sO63Nfx2/GgFeOHaJoY?= =?utf-8?q?2+GUY0xLRw9mS1pd6DEiRjxhr6BU+yzBeB0msUtNVSldes/eJgWUmxeidvE5BnA8k?= =?utf-8?q?e5UHzraXP2NYNkAH2AsX0d8QcgT+RhsXI2DABN5NXdMnPaG8HCPcbZfTXxHVSIxR8?= =?utf-8?q?Kcfh1CmhARByfRyxP48MXKvE8AIkPilQ/nrE6ib5z299qdNTuBopZJE22ENK0UseQ?= =?utf-8?q?wsZX31AKZl2n6NAYG4j8kmerx8MGsaYPMQGG5V8rgv+wn2DyEA1JKcbI4MlzsE66x?= =?utf-8?q?dGlUgulYq18wLQHeYu7jELCg7rhj8jBxHMMzqip0heBreR2kdJ7sdlDFk6GK+Ckw2?= =?utf-8?q?K+QZMWaBsE7LkgfKemwGeG6R2ZrprBHAwgJ3CRiXxwXxDDAms/neflZKVSvymiUoB?= =?utf-8?q?7Eh4SOUf/zU+uqVh6CL8bdHoXOdwZWGj7ZGWmT6oqmpn6dk6rDSs2S6NgeEQFkZSi?= =?utf-8?q?K0/u3czVfwLJ33pQLIgdKE7npa4iL5bD6YwksySmJD7tWJTUfs7610v5CbQmKgB0o?= =?utf-8?q?3aLA6yQwoq6dzJgvF1o9g3jBSDbwDd6HeRvWJheKKFJiw3RZAwim/D2hldrvoRANN?= =?utf-8?q?jsEnw2kQusPwWnh0IJjf8gZOQu5Mjida/hfydgjIpzoD8r51PY8pDS0ilm5pZmAQa?= =?utf-8?q?F+aAKYuuIgrMNAcvP/yItgJUxzNEgWw+xB3nBYecfMpkDXW2Ci06bUx8FgcrCCLHp?= =?utf-8?q?qc8ZcPcLTMWzkR2clKA3ZJ5Jcgelaj6Zi6eX/AfaguJfQbksO8o8Kd2pimzwZKPtz?= =?utf-8?q?VuMyr1HezL5atlzkyvgf43MjoQnd1o0n16fBrXvPbrnnWX/NYxv0D5o=3D?= Content-ID: <98EBBDFACEAC3A488E9750C90187B905@apcprd04.prod.outlook.com> MIME-Version: 1.0 X-OriginatorOrg: espressif.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: TYZPR04MB5736.apcprd04.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: df9f6889-8bdf-44cc-8913-08dab42cab02 X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Oct 2022 12:55:16.6352 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 5faf27fd-3557-4294-9545-8ea74a409f39 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: eHyfp31t5ZswGYLub75msqdLpH5tFgEcPwE9t3HBz/I3D2re8X45vzEYKhXmeXc5QTP0sr20s6paSzxBELoUryLTdCxNrRI404vBYKxkh74= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SEYPR04MB5908 X-Spam-Status: No, score=-13.2 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, 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: Alexey Lapshin via Binutils From: Alexey Lapshin Reply-To: Alexey Lapshin Cc: Anton Maklakov , Alexey Gerenkov , Ivan Grokhotkov 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?1747392483629615602?= X-GMAIL-MSGID: =?utf-8?q?1747392483629615602?= Added additional assembley options for a better flexibility. --- gas/config/tc-xtensa.c | 53 ++++++++++++++++++++++++++++++++++++--- gas/config/tc-xtensa.h | 2 +- gas/config/xtensa-relax.c | 8 ++++-- 3 files changed, 57 insertions(+), 6 deletions(-) -- 2.34.1 diff --git a/gas/config/tc-xtensa.c b/gas/config/tc-xtensa.c index df6a3cec8a1..630d147bf63 100644 --- a/gas/config/tc-xtensa.c +++ b/gas/config/tc-xtensa.c @@ -89,6 +89,9 @@ static vliw_insn cur_vinsn; unsigned xtensa_num_pipe_stages; unsigned xtensa_fetch_width; +unsigned target_have_booleans = XCHAL_HAVE_LOOPS; +unsigned target_have_loops = XCHAL_HAVE_BOOLEANS; + static enum debug_info_type xt_saved_debug_type = DEBUG_NONE; /* Some functions are only valid in the front end. This variable @@ -746,6 +749,15 @@ enum option_abi_windowed, option_abi_call0, + + option_eb, + option_el, + + option_loops, + option_no_loops, + + option_booleans, + option_no_booleans, }; const char *md_shortopts = ""; @@ -830,6 +842,15 @@ struct option md_longopts[] = { "abi-windowed", no_argument, NULL, option_abi_windowed }, { "abi-call0", no_argument, NULL, option_abi_call0 }, + { "EL", no_argument, NULL, option_el }, + { "EB", no_argument, NULL, option_eb }, + + { "loops", no_argument, NULL, option_loops }, + { "no-loops", no_argument, NULL, option_no_loops }, + + { "booleans", no_argument, NULL, option_booleans }, + { "no-booleans", no_argument, NULL, option_no_booleans }, + { NULL, no_argument, NULL, 0 } }; @@ -1066,6 +1087,30 @@ md_parse_option (int c, const char *arg) elf32xtensa_abi = XTHAL_ABI_CALL0; return 1; + case option_eb: + target_big_endian = 1; + return 1; + + case option_el: + target_big_endian = 0; + return 1; + + case option_loops: + target_have_loops = 1; + return 1; + + case option_no_loops: + target_have_loops = 0; + return 1; + + case option_booleans: + target_have_booleans = 1; + return 1; + + case option_no_booleans: + target_have_booleans = 0; + return 1; + default: return 0; } @@ -1100,7 +1145,11 @@ Xtensa options:\n\ --[no-]separate-prop-tables\n\ [Do not] place Xtensa property records into\n\ individual property sections for each section.\n\ - Default is to generate single property section.\n", stream); + Default is to generate single property section.\n\ + --EB Generate code for a big endian machine.\n\ + --EL Generate code for a little endian machine.\n\ + --[no-]booleans [Do not] use boolean registers.\n\ + --[no-]loops [Do not] zero-overhead loops.\n", stream); } @@ -5268,8 +5317,6 @@ md_number_to_chars (char *buf, valueT val, int n) static void xg_init_global_config (void) { - target_big_endian = XCHAL_HAVE_BE; - density_supported = XCHAL_HAVE_DENSITY; absolute_literals_supported = XSHAL_USE_ABSOLUTE_LITERALS; xtensa_fetch_width = XCHAL_INST_FETCH_WIDTH; diff --git a/gas/config/tc-xtensa.h b/gas/config/tc-xtensa.h index 1887558ecf1..914f4565c52 100644 --- a/gas/config/tc-xtensa.h +++ b/gas/config/tc-xtensa.h @@ -30,7 +30,7 @@ struct fix; #include "xtensa-isa.h" #include "xtensa-config.h" -#define TARGET_BYTES_BIG_ENDIAN 0 +#define TARGET_BYTES_BIG_ENDIAN XCHAL_HAVE_BE /* Maximum number of opcode slots in a VLIW instruction. */ diff --git a/gas/config/xtensa-relax.c b/gas/config/xtensa-relax.c index 0682b29f815..aad9ae7d348 100644 --- a/gas/config/xtensa-relax.c +++ b/gas/config/xtensa-relax.c @@ -102,6 +102,10 @@ /* Imported from bfd. */ extern xtensa_isa xtensa_default_isa; +/* Imported from tc-xtensa. */ +extern unsigned target_have_booleans; +extern unsigned target_have_loops; + /* The opname_list is a small list of names that we use for opcode and operand variable names to simplify ownership of these commonly used strings. Strings entered in the table can be compared by pointer @@ -1569,7 +1573,7 @@ transition_applies (insn_pattern *initial_insn, else if (!strcmp (option_name, "Const16")) option_available = (XCHAL_HAVE_CONST16 == 1); else if (!strcmp (option_name, "Loops")) - option_available = (XCHAL_HAVE_LOOPS == 1); + option_available = (target_have_loops == 1); else if (!strcmp (option_name, "WideBranches")) option_available = (XCHAL_HAVE_WIDE_BRANCHES == 1 && produce_flix == FLIX_ALL); @@ -1578,7 +1582,7 @@ transition_applies (insn_pattern *initial_insn, = (XCHAL_HAVE_PREDICTED_BRANCHES == 1 && produce_flix == FLIX_ALL); else if (!strcmp (option_name, "Booleans")) - option_available = (XCHAL_HAVE_BOOLEANS == 1); + option_available = (target_have_booleans == 1); else as_warn (_("invalid configuration option '%s' in transition rule '%s'"), req_or_option->option_name, from_string);