From patchwork Fri Jun 16 06:24:54 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: YunQiang Su X-Patchwork-Id: 108836 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp1122670vqr; Thu, 15 Jun 2023 23:25:50 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ4p75FwO1NGSM+h95eWdeQepM/YHXe/rQksmjMBxhEs1Jqroj9kTiyYwRCiZ5jVHm0pM8BL X-Received: by 2002:a05:6402:1118:b0:514:9ab4:3524 with SMTP id u24-20020a056402111800b005149ab43524mr521071edv.7.1686896750325; Thu, 15 Jun 2023 23:25:50 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1686896750; cv=pass; d=google.com; s=arc-20160816; b=YTzVua72VKHdTr9tvZlwLheWLL0Rn8DifRN0TbLJWIsWxx+aK3GASr7cSDtnaWFXv3 svS+l8nNqwkJlwqfwfv1HT+r5KPdjF/8/LsmLLwPBbOIFvW2w5/AteRu9xwGAi01v4JT riiQnwfv1q69FNtD+qD5L2cV8hKPY7W68d3i/EZSGRRamVTwxypmBGaYxMuJDaNWBkYE hDTSX1g1cuuMh5If/ei5DBVZHxXY3IYDm0dnk/v+CM9uerBX4Ipu+1AcPDTDi3LpT28Y t+25GvMSGwUbWPzxmOvjHPQEpvy8KYnMKEf9vO8RK0IMGxsom3dUtEEG4jEjsU+tHXQ2 wW6Q== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:mime-version :content-transfer-encoding:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature:dmarc-filter:delivered-to; bh=SeJzZEMzm3xPPQLlanF9TggppGlFTdN7Tai0DuOl0bc=; b=EJm3b8IGwGj7E/qFn+WCFjZ0cA8J0yvn0mr1JF47OR28LhapQT11jKpmDfFxGGmFgH u6waiI8mPfOCJ0tRe1GCIEPtuF0lrNYinFIGCpDJHNf2Ihn7ZRAJoOWfXqPnpPahARu9 irOWSMRQFHKppYf6Z2BYgcDJM1i0mKcwBwwjjfVelInTJzaVUOYVBdl0eLhcOLlrFSUt F475GIWvsuTkiJ0iyHRC1IDHFJaIi/WJIoscClQ4TxQtbeVnOODr7npTNrEFzD8T6tdm g+XsbVGb70JnS6aABb4eeFWJvzCqqIVLF/L8840m4ZH3bqBeGDRu5yey+Cxo7sWt2f9A AgJw== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@cipunited.onmicrosoft.com header.s=selector1-cipunited-onmicrosoft-com header.b=rXOk5LXv; arc=pass (i=1 spf=pass spfdomain=cipunited.com dkim=pass dkdomain=cipunited.com dmarc=pass fromdomain=cipunited.com); 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" Received: from sourceware.org (ip-8-43-85-97.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id l6-20020a056402344600b0051a1ea30d3esi2024716edc.90.2023.06.15.23.25.50 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jun 2023 23:25:50 -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=@cipunited.onmicrosoft.com header.s=selector1-cipunited-onmicrosoft-com header.b=rXOk5LXv; arc=pass (i=1 spf=pass spfdomain=cipunited.com dkim=pass dkdomain=cipunited.com dmarc=pass fromdomain=cipunited.com); 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" Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id C3F733853D1D for ; Fri, 16 Jun 2023 06:25:43 +0000 (GMT) X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from APC01-PSA-obe.outbound.protection.outlook.com (mail-psaapc01on2123.outbound.protection.outlook.com [40.107.255.123]) by sourceware.org (Postfix) with ESMTPS id 62C18385624C for ; Fri, 16 Jun 2023 06:25:35 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 62C18385624C Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=cipunited.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=cipunited.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=IaKEEkla+FMOJR3tqJHMffmqTk1V4KN2ErrDdTm70E803SHlb6soVKjCXA2bI21KeAKaacV/LnlCuawLHdq3eEWFQQzKRGoIj8z/O6zt1ljMAgMslax8xIka5si5WpQZowEfjtWXRn0v5bxnuypqiOSEj05LdsJ/pi9dfkkK+yJNxGXqt9N4p67CZRNz4Qmb+YSrmc5Zg1xZB/FcmfBLCoHuSn5G+LUVOkp5hFfIVnV+KatWQiZ6cfMXQ+03gXkdvn/Ap/IE2LoRUxX6dkqBwiVmZs3Xp/KKPs/u1hE6pftubmCIQI6VPDlk5Q6VyyyaPNQksjZTCb31kf1krVinbg== 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=SeJzZEMzm3xPPQLlanF9TggppGlFTdN7Tai0DuOl0bc=; b=UuOt4ArYl2lSrKXHBYKU7UdT6Ba1gjPVH+/dN6g+UYhLav98gUlgf9flxzOIyPiovzLdEhaKRL751s7c4UamA8u/3QLTcXD7KPuD1FnJEEDqbeUpN+wvRETQ8HUhBpIQfXx09uKthksB8qHZ+yelv3+aCGl3AbseANHfMJ9rHmRAbWD5TLdAzDuSx9zk2IXX66AddzyPkz2iCtmdTVRsm2vbM8T+TYiJtFcNn9cdHT5fdlzfeSyaOnBnnRRs8efW5bBF/aY3woF0rxgbXp5NQG8r7m4osk1kT0UGx2+59i5yD4zGq3lqUC4FyrCPEN2LWdojyBSueUDVHF923WJ7Cw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=cipunited.com; dmarc=pass action=none header.from=cipunited.com; dkim=pass header.d=cipunited.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cipunited.onmicrosoft.com; s=selector1-cipunited-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=SeJzZEMzm3xPPQLlanF9TggppGlFTdN7Tai0DuOl0bc=; b=rXOk5LXvzduzpyRMUzW/NWca53wGxdS918yhma2FgPNQwgDGFQYO6LoTt6RS9CCD25BdeUyW/Vrqit0h153TjySkPgYxAgGkCbUZ87pdWwVYjPcZAmOOHiQNHoFBfls/1DhSaR9Gc5r8A47sU74tB7TO2ZbIQ6Kvtq+zIFA6n/s= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=cipunited.com; Received: from SEZPR04MB6121.apcprd04.prod.outlook.com (2603:1096:101:98::10) by TYUPR04MB6911.apcprd04.prod.outlook.com (2603:1096:400:350::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6455.44; Fri, 16 Jun 2023 06:25:30 +0000 Received: from SEZPR04MB6121.apcprd04.prod.outlook.com ([fe80::8969:4dde:3fc5:33c9]) by SEZPR04MB6121.apcprd04.prod.outlook.com ([fe80::8969:4dde:3fc5:33c9%4]) with mapi id 15.20.6500.026; Fri, 16 Jun 2023 06:25:29 +0000 From: YunQiang Su To: binutils@sourceware.org Cc: macro@orcam.me.uk, paul.hua.gm@gmail.com, amodra@gmail.com, jbeulich@suse.com, YunQiang Su Subject: [PATCH v3 1/7] MIPS: Gas: alter 64 or 32 for mipsisa triples if march is implicit Date: Fri, 16 Jun 2023 14:24:54 +0800 Message-Id: <20230616062504.1713904-2-yunqiang.su@cipunited.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230616062504.1713904-1-yunqiang.su@cipunited.com> References: <20230616062504.1713904-1-yunqiang.su@cipunited.com> X-ClientProxiedBy: SGXP274CA0023.SGPP274.PROD.OUTLOOK.COM (2603:1096:4:b8::35) To SEZPR04MB6121.apcprd04.prod.outlook.com (2603:1096:101:98::10) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SEZPR04MB6121:EE_|TYUPR04MB6911:EE_ X-MS-Office365-Filtering-Correlation-Id: 3ee521b4-35c4-45a0-617c-08db6e327aac X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: yuoTQ1ryZVVfCI8PiwbdsuvBMAQO0i116Bint0INQEKpr1NJC5T7n/5MpnIQs03EOC9++kbEefTPpChn6W6+HyDAE29MDI/reDTInr62h541W8IDsOaZGVNhJGQB2jEDKkz2WG4hsDJ8u02FS2c2aljqEmnQi5tieFqeb24E9qlTgQ4g+demb8uyRIwW0YxFO+QsiTbSjhQUZQhp3yb2etas3FCPMxYPLTANT154lbFhYWaNFekf7JYuL/uqHXM4W7xNewywNSfLciQDWJA94FGUFAOUjhVah/fNdHOxANb9cDvpPtBEVH2LdVeM0vdFjVFygTSzq9H6OwEwhvdlyhnnCMmIMW33ZbQXnqWS1PEklOMTXSe81qYQ8eMy2VD6m1Kc4LooqCgySKnpuVbGiikRQh9AFyuVOY6+Ylt4UR+4chniTLmm+qid/2hXfBipQGY8FSNz9XbaxjsPn2idaP8pX+ktp4dkvYy5bVypzSrnWavGPPlv9uQUzDHEEG9pWMyGrFP7m8GjDUw5MP6GMDGMLFNfgkbHVAIJl+COziYPVo+eEOxBZAGGLRImy9VOhXlGBiIVOQUudtVFPcJLb5FBDkMX3WB91gdOcRswKDblehyQHB0M/VYj91NsV/aj X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SEZPR04MB6121.apcprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(136003)(396003)(39830400003)(366004)(346002)(376002)(451199021)(36756003)(186003)(30864003)(2906002)(83380400001)(26005)(1076003)(6512007)(6506007)(66946007)(52116002)(41300700001)(6486002)(107886003)(316002)(8676002)(8936002)(5660300002)(86362001)(66476007)(2616005)(66556008)(4326008)(6916009)(38350700002)(38100700002)(478600001)(6666004); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: j6/aXGt8HEmT+08pr/CpvaLtGPryR/C2+W2EEyqfgb+S0d0oFFr+V6IrDA/7AZBb057bJvcieXxsVbnvgt/W5UoJm/fr709eltVlrLcDC4wjkr3sKFuUvLVY3tdpFTVBDJ3zuqCBHp/psOANfMyLnq8Vu55ncx4G03wp211YdeWFy7TjSuD/jA9elUDJWKG9yjc+0XxTFZyxi5jDMwhh2B2b10LTXL6qlD2/gz2ExQbSFdeyZUIMCysjIvRyU9Uujv9mRebXWhtXMTDt4n/ygC+MXaltLz5HDrLO3kY2C173qOWYBGrtwkjiZ3aNGWtKmpmLGKlNeVXL4hVb9tqOg1GuJ9peNWuiILbH1624fiNay4fifUXlm93tKGjMzxwP6JAaVnsx7Gw26nDEGWf3vbuPJOIC9GS3WxSX8WcF5b0kPcxv2TBaUsUrJyojDDgMsi+Vtbvoz0D7ZNvJ0iygJABe5LE5sCBLMrTjLa4ynRGJMTy5thywRI3vkUmG6B+C1tmSyf/aor4vG67xCRWX++OMP2pm7CgITI7Sf3K/9GeSYdWKISKG2m4wQsAdbSzyD6+rkg+7+lPRohLPB5rs6Sd84RFzaJrVPs2GYthta7ExN6Mwc30nNkaTytkC5j9xrqtCai/tUwjJ939vGu8tWyoECQdjB7V5gKGTrueCmPC6Yj3FGatZ5m6t/JSRK40Ww3DefNuD2DIJtNcqCEMGnDKnefgBemqz+obbmWzkPIw21/TpqANwJqlZ6Jl+dwHsH7XrYMnUd+KntWyg3l3+vs84JCDWnuh7OSXkJFwhLzPw27vPUc0nru0JHGr25T+v8D0GZmQou0fapzSJEwaxc89gx4Qv00oI6U2SgiLc1n8tKumHGT//l66nFehrYxPB5kfmdryfc69qwNXGu9BI7ucmkaxrDwSPJsueJzMaS5rnBh5rKrrDv+UknoM1Ll71ZLYYvX2N0103BuJhE9Bf3Pp/eQj226Ho2QNdKDO0uYw7bZ+HI1iM5qYDB6MxCbFq2ipuLSwdIQ1rUMLTo6gKiY3s3ISduVxRE1yqdiZGhltt2E5rFR3K01bsHvPertTYV/L8bzqB/PIjep9oG2p8T0rHf5BfTkiE9LNmOqx0JCumQB4OrYy29Bc6+r5l3K5lauMljoNQtIaE4SKc4sDMgVB2mdrREqwkq02mreTb0NYRcFC7blWVz5bE6OCyOgoTEq/oX08IWfqCqMlxHXE2DvidtljIO2m5AjmnoAYJCVo2asHhKdDN1feiOKNW/yx5MKGelVCABqHe5g3DQ1k+38hKp7mEnqjKKjBFeUB74+jn3+P5QACMypUgjGTZNHYA0JEuf/B5VtqQCcZOaLv/h9gsHUDUIkCSkEFO77jzeDuVGFFQD84YchLcMfJ86Wd1u44iIzZycKFPcg0GWpI3UZSVejp2EG0yVyHBVHjE7ACE1pT7zvZifdGA1ngMzwRgkxtGvgLJ23B7oQJp9MBXC6I+MeK0RmSbB8rVgwOq+fdJjCtFbrT9f6CmY59tsklc/TCFCznUA/OTo2MhV3C8fetGw8SF5qiikGGJBECQHy7nDJH9rl7yBTQj8MMt1ffdcQbOJ0haiB6bXKMgeHWlCw== X-OriginatorOrg: cipunited.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3ee521b4-35c4-45a0-617c-08db6e327aac X-MS-Exchange-CrossTenant-AuthSource: SEZPR04MB6121.apcprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Jun 2023 06:25:29.1204 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e31cf5b5-ee69-4d5f-9c69-edeeda2458c0 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 8zsTaNrGfew7mobu7m01KHG/xPG73aIsokIv+HoDA6BlBEAMa5aLmN4prbY55HM50bot1cnX15JLwnBbTQc5aG+vS036cZ1szVENJFSLuk0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYUPR04MB6911 X-Spam-Status: No, score=-12.8 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, T_SCC_BODY_TEXT_LINE 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: , 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?1768839446741786214?= X-GMAIL-MSGID: =?utf-8?q?1768839446741786214?= When GAS is configured with triples mipsisa[32,64]rN[el,], the default march value is pinned to a fix value. for example 1) mipsisa32r6-linux-gnu -n32 xx.s will complains that: -march=mips32r6 is not compatible with the selected ABI 2) mipsisa64r2el-linux-gnu -o32 generates objects with 64bit CPU: ELF 32-bit LSB relocatable, MIPS, MIPS64 rel2 version 1 (SYSV) They are not good default behaviors due to we are using them for regular Linux distributions, like Debian. So, let's alter march according to ABI. --- gas/config/tc-mips.c | 1003 +++++++++++++++++++++++++++---- gas/testsuite/gas/mips/mips.exp | 4 +- 2 files changed, 873 insertions(+), 134 deletions(-) diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c index d6aae660abf..77eb6d1d10d 100644 --- a/gas/config/tc-mips.c +++ b/gas/config/tc-mips.c @@ -1430,11 +1430,13 @@ static void file_mips_check_options (void); struct mips_cpu_info { - const char *name; /* CPU or ISA name. */ - int flags; /* MIPS_CPU_* flags. */ - int ase; /* Set of ASEs implemented by the CPU. */ - int isa; /* ISA level. */ - int cpu; /* CPU number (default CPU if ISA). */ + const char *name; /* CPU or ISA name. */ + int flags; /* MIPS_CPU_* flags. */ + int ase; /* Set of ASEs implemented by the CPU. */ + int isa; /* ISA level. */ + int isa_32; /* Best matched 32bit ISA level. */ + int isa_64; /* Best matched 64bit ISA level. */ + int cpu; /* CPU number (default CPU if ISA). */ }; #define MIPS_CPU_IS_ISA 0x0001 /* Is this an ISA? (If 0, a CPU.) */ @@ -1442,6 +1444,7 @@ struct mips_cpu_info static const struct mips_cpu_info *mips_parse_cpu (const char *, const char *); static const struct mips_cpu_info *mips_cpu_info_from_isa (int); static const struct mips_cpu_info *mips_cpu_info_from_arch (int); +static const struct mips_cpu_info *mips_cpu_info_from_name (const char *); /* Command-line options. */ const char *md_shortopts = "O::g::G:"; @@ -19988,180 +19991,880 @@ s_mips_mask (int reg_type) static const struct mips_cpu_info mips_cpu_info_table[] = { /* Entries for generic ISAs. */ - { "mips1", MIPS_CPU_IS_ISA, 0, ISA_MIPS1, CPU_R3000 }, - { "mips2", MIPS_CPU_IS_ISA, 0, ISA_MIPS2, CPU_R6000 }, - { "mips3", MIPS_CPU_IS_ISA, 0, ISA_MIPS3, CPU_R4000 }, - { "mips4", MIPS_CPU_IS_ISA, 0, ISA_MIPS4, CPU_R8000 }, - { "mips5", MIPS_CPU_IS_ISA, 0, ISA_MIPS5, CPU_MIPS5 }, - { "mips32", MIPS_CPU_IS_ISA, 0, ISA_MIPS32, CPU_MIPS32 }, - { "mips32r2", MIPS_CPU_IS_ISA, 0, ISA_MIPS32R2, CPU_MIPS32R2 }, - { "mips32r3", MIPS_CPU_IS_ISA, 0, ISA_MIPS32R3, CPU_MIPS32R3 }, - { "mips32r5", MIPS_CPU_IS_ISA, 0, ISA_MIPS32R5, CPU_MIPS32R5 }, - { "mips32r6", MIPS_CPU_IS_ISA, 0, ISA_MIPS32R6, CPU_MIPS32R6 }, - { "mips64", MIPS_CPU_IS_ISA, 0, ISA_MIPS64, CPU_MIPS64 }, - { "mips64r2", MIPS_CPU_IS_ISA, 0, ISA_MIPS64R2, CPU_MIPS64R2 }, - { "mips64r3", MIPS_CPU_IS_ISA, 0, ISA_MIPS64R3, CPU_MIPS64R3 }, - { "mips64r5", MIPS_CPU_IS_ISA, 0, ISA_MIPS64R5, CPU_MIPS64R5 }, - { "mips64r6", MIPS_CPU_IS_ISA, 0, ISA_MIPS64R6, CPU_MIPS64R6 }, + { "mips1", + MIPS_CPU_IS_ISA, + 0, + ISA_MIPS1, + ISA_MIPS1, + ISA_MIPS3, + CPU_R3000 }, + { "mips2", + MIPS_CPU_IS_ISA, + 0, + ISA_MIPS2, + ISA_MIPS2, + ISA_MIPS3, + CPU_R6000 }, + { "mips3", + MIPS_CPU_IS_ISA, + 0, + ISA_MIPS3, + ISA_MIPS2, + ISA_MIPS3, + CPU_R4000 }, + { "mips4", + MIPS_CPU_IS_ISA, + 0, + ISA_MIPS4, + ISA_MIPS2, + ISA_MIPS4, + CPU_R8000 }, + { "mips5", + MIPS_CPU_IS_ISA, + 0, + ISA_MIPS5, + ISA_MIPS2, + ISA_MIPS5, + CPU_MIPS5 }, + { "mips32", + MIPS_CPU_IS_ISA, + 0, + ISA_MIPS32, + ISA_MIPS32, + ISA_MIPS64, + CPU_MIPS32 }, + { "mips32r2", + MIPS_CPU_IS_ISA, + 0, + ISA_MIPS32R2, + ISA_MIPS32R2, + ISA_MIPS64R2, + CPU_MIPS32R2 }, + { "mips32r3", + MIPS_CPU_IS_ISA, + 0, + ISA_MIPS32R3, + ISA_MIPS32R3, + ISA_MIPS64R3, + CPU_MIPS32R3 }, + { "mips32r5", + MIPS_CPU_IS_ISA, + 0, + ISA_MIPS32R5, + ISA_MIPS32R5, + ISA_MIPS64R5, + CPU_MIPS32R5 }, + { "mips32r6", + MIPS_CPU_IS_ISA, + 0, + ISA_MIPS32R6, + ISA_MIPS32R6, + ISA_MIPS64R6, + CPU_MIPS32R6 }, + { "mips64", + MIPS_CPU_IS_ISA, + 0, + ISA_MIPS64, + ISA_MIPS32, + ISA_MIPS64, + CPU_MIPS64 }, + { "mips64r2", + MIPS_CPU_IS_ISA, + 0, + ISA_MIPS64R2, + ISA_MIPS32R2, + ISA_MIPS64R2, + CPU_MIPS64R2 }, + { "mips64r3", + MIPS_CPU_IS_ISA, + 0, + ISA_MIPS64R3, + ISA_MIPS32R3, + ISA_MIPS64R3, + CPU_MIPS64R3 }, + { "mips64r5", + MIPS_CPU_IS_ISA, + 0, + ISA_MIPS64R5, + ISA_MIPS32R5, + ISA_MIPS64R5, + CPU_MIPS64R5 }, + { "mips64r6", + MIPS_CPU_IS_ISA, + 0, + ISA_MIPS64R6, + ISA_MIPS32R6, + ISA_MIPS64R6, + CPU_MIPS64R6 }, /* MIPS I */ - { "r3000", 0, 0, ISA_MIPS1, CPU_R3000 }, - { "r2000", 0, 0, ISA_MIPS1, CPU_R3000 }, - { "r3900", 0, 0, ISA_MIPS1, CPU_R3900 }, + { "r3000", + 0, + 0, + ISA_MIPS1, + 0, + 0, + CPU_R3000 }, + { "r2000", + 0, + 0, + ISA_MIPS1, + 0, + 0, + CPU_R3000 }, + { "r3900", + 0, + 0, + ISA_MIPS1, + 0, + 0, + CPU_R3900 }, /* MIPS II */ - { "r6000", 0, 0, ISA_MIPS2, CPU_R6000 }, - { "allegrex", 0, 0, ISA_MIPS2, CPU_ALLEGREX }, + { "r6000", + 0, + 0, + ISA_MIPS2, + 0, + 0, + CPU_R6000 }, + { "allegrex", + 0, + 0, + ISA_MIPS2, + 0, + 0, + CPU_ALLEGREX }, /* MIPS III */ - { "r4000", 0, 0, ISA_MIPS3, CPU_R4000 }, - { "r4010", 0, 0, ISA_MIPS2, CPU_R4010 }, - { "vr4100", 0, 0, ISA_MIPS3, CPU_VR4100 }, - { "vr4111", 0, 0, ISA_MIPS3, CPU_R4111 }, - { "vr4120", 0, 0, ISA_MIPS3, CPU_VR4120 }, - { "vr4130", 0, 0, ISA_MIPS3, CPU_VR4120 }, - { "vr4181", 0, 0, ISA_MIPS3, CPU_R4111 }, - { "vr4300", 0, 0, ISA_MIPS3, CPU_R4300 }, - { "r4400", 0, 0, ISA_MIPS3, CPU_R4400 }, - { "r4600", 0, 0, ISA_MIPS3, CPU_R4600 }, - { "orion", 0, 0, ISA_MIPS3, CPU_R4600 }, - { "r4650", 0, 0, ISA_MIPS3, CPU_R4650 }, - { "r5900", 0, 0, ISA_MIPS3, CPU_R5900 }, + { "r4000", + 0, + 0, + ISA_MIPS3, + 0, + 0, + CPU_R4000 }, + { "r4010", + 0, + 0, + ISA_MIPS2, + 0, + 0, + CPU_R4010 }, + { "vr4100", + 0, + 0, + ISA_MIPS3, + 0, + 0, + CPU_VR4100 }, + { "vr4111", + 0, + 0, + ISA_MIPS3, + 0, + 0, + CPU_R4111 }, + { "vr4120", + 0, + 0, + ISA_MIPS3, + 0, + 0, + CPU_VR4120 }, + { "vr4130", + 0, + 0, + ISA_MIPS3, + 0, + 0, + CPU_VR4120 }, + { "vr4181", + 0, + 0, + ISA_MIPS3, + 0, + 0, + CPU_R4111 }, + { "vr4300", + 0, + 0, + ISA_MIPS3, + 0, + 0, + CPU_R4300 }, + { "r4400", + 0, + 0, + ISA_MIPS3, + 0, + 0, + CPU_R4400 }, + { "r4600", + 0, + 0, + ISA_MIPS3, + 0, + 0, + CPU_R4600 }, + { "orion", + 0, + 0, + ISA_MIPS3, + 0, + 0, + CPU_R4600 }, + { "r4650", + 0, + 0, + ISA_MIPS3, + 0, + 0, + CPU_R4650 }, + { "r5900", + 0, + 0, + ISA_MIPS3, + 0, + 0, + CPU_R5900 }, /* ST Microelectronics Loongson 2E and 2F cores. */ - { "loongson2e", 0, 0, ISA_MIPS3, CPU_LOONGSON_2E }, - { "loongson2f", 0, ASE_LOONGSON_MMI, ISA_MIPS3, CPU_LOONGSON_2F }, + { "loongson2e", + 0, + 0, + ISA_MIPS3, + 0, + 0, + CPU_LOONGSON_2E }, + { "loongson2f", + 0, + ASE_LOONGSON_MMI, + ISA_MIPS3, + 0, + 0, + CPU_LOONGSON_2F }, /* MIPS IV */ - { "r8000", 0, 0, ISA_MIPS4, CPU_R8000 }, - { "r10000", 0, 0, ISA_MIPS4, CPU_R10000 }, - { "r12000", 0, 0, ISA_MIPS4, CPU_R12000 }, - { "r14000", 0, 0, ISA_MIPS4, CPU_R14000 }, - { "r16000", 0, 0, ISA_MIPS4, CPU_R16000 }, - { "vr5000", 0, 0, ISA_MIPS4, CPU_R5000 }, - { "vr5400", 0, 0, ISA_MIPS4, CPU_VR5400 }, - { "vr5500", 0, 0, ISA_MIPS4, CPU_VR5500 }, - { "rm5200", 0, 0, ISA_MIPS4, CPU_R5000 }, - { "rm5230", 0, 0, ISA_MIPS4, CPU_R5000 }, - { "rm5231", 0, 0, ISA_MIPS4, CPU_R5000 }, - { "rm5261", 0, 0, ISA_MIPS4, CPU_R5000 }, - { "rm5721", 0, 0, ISA_MIPS4, CPU_R5000 }, - { "rm7000", 0, 0, ISA_MIPS4, CPU_RM7000 }, - { "rm9000", 0, 0, ISA_MIPS4, CPU_RM9000 }, + { "r8000", + 0, + 0, + ISA_MIPS4, + 0, + 0, + CPU_R8000 }, + { "r10000", + 0, + 0, + ISA_MIPS4, + 0, + 0, + CPU_R10000 }, + { "r12000", + 0, + 0, + ISA_MIPS4, + 0, + 0, + CPU_R12000 }, + { "r14000", + 0, + 0, + ISA_MIPS4, + 0, + 0, + CPU_R14000 }, + { "r16000", + 0, + 0, + ISA_MIPS4, + 0, + 0, + CPU_R16000 }, + { "vr5000", + 0, + 0, + ISA_MIPS4, + 0, + 0, + CPU_R5000 }, + { "vr5400", + 0, + 0, + ISA_MIPS4, + 0, + 0, + CPU_VR5400 }, + { "vr5500", + 0, + 0, + ISA_MIPS4, + 0, + 0, + CPU_VR5500 }, + { "rm5200", + 0, + 0, + ISA_MIPS4, + 0, + 0, + CPU_R5000 }, + { "rm5230", + 0, + 0, + ISA_MIPS4, + 0, + 0, + CPU_R5000 }, + { "rm5231", + 0, + 0, + ISA_MIPS4, + 0, + 0, + CPU_R5000 }, + { "rm5261", + 0, + 0, + ISA_MIPS4, + 0, + 0, + CPU_R5000 }, + { "rm5721", + 0, + 0, + ISA_MIPS4, + 0, + 0, + CPU_R5000 }, + { "rm7000", + 0, + 0, + ISA_MIPS4, + 0, + 0, + CPU_RM7000 }, + { "rm9000", + 0, + 0, + ISA_MIPS4, + 0, + 0, + CPU_RM9000 }, /* MIPS 32 */ - { "4kc", 0, 0, ISA_MIPS32, CPU_MIPS32 }, - { "4km", 0, 0, ISA_MIPS32, CPU_MIPS32 }, - { "4kp", 0, 0, ISA_MIPS32, CPU_MIPS32 }, - { "4ksc", 0, ASE_SMARTMIPS, ISA_MIPS32, CPU_MIPS32 }, + { "4kc", + 0, + 0, + ISA_MIPS32, + 0, + 0, + CPU_MIPS32 }, + { "4km", + 0, + 0, + ISA_MIPS32, + 0, + 0, + CPU_MIPS32 }, + { "4kp", + 0, + 0, + ISA_MIPS32, + 0, + 0, + CPU_MIPS32 }, + { "4ksc", + 0, + ASE_SMARTMIPS, + ISA_MIPS32, + 0, + 0, + CPU_MIPS32 }, /* MIPS 32 Release 2 */ - { "4kec", 0, 0, ISA_MIPS32R2, CPU_MIPS32R2 }, - { "4kem", 0, 0, ISA_MIPS32R2, CPU_MIPS32R2 }, - { "4kep", 0, 0, ISA_MIPS32R2, CPU_MIPS32R2 }, - { "4ksd", 0, ASE_SMARTMIPS, ISA_MIPS32R2, CPU_MIPS32R2 }, - { "m4k", 0, 0, ISA_MIPS32R2, CPU_MIPS32R2 }, - { "m4kp", 0, 0, ISA_MIPS32R2, CPU_MIPS32R2 }, - { "m14k", 0, ASE_MCU, ISA_MIPS32R2, CPU_MIPS32R2 }, - { "m14kc", 0, ASE_MCU, ISA_MIPS32R2, CPU_MIPS32R2 }, - { "m14ke", 0, ASE_DSP | ASE_DSPR2 | ASE_MCU, - ISA_MIPS32R2, CPU_MIPS32R2 }, - { "m14kec", 0, ASE_DSP | ASE_DSPR2 | ASE_MCU, - ISA_MIPS32R2, CPU_MIPS32R2 }, - { "24kc", 0, 0, ISA_MIPS32R2, CPU_MIPS32R2 }, - { "24kf2_1", 0, 0, ISA_MIPS32R2, CPU_MIPS32R2 }, - { "24kf", 0, 0, ISA_MIPS32R2, CPU_MIPS32R2 }, - { "24kf1_1", 0, 0, ISA_MIPS32R2, CPU_MIPS32R2 }, + { "4kec", + 0, + 0, + ISA_MIPS32R2, + 0, + 0, + CPU_MIPS32R2 }, + { "4kem", + 0, + 0, + ISA_MIPS32R2, + 0, + 0, + CPU_MIPS32R2 }, + { "4kep", + 0, + 0, + ISA_MIPS32R2, + 0, + 0, + CPU_MIPS32R2 }, + { "4ksd", + 0, + ASE_SMARTMIPS, + ISA_MIPS32R2, + 0, + 0, + CPU_MIPS32R2 }, + { "m4k", + 0, + 0, + ISA_MIPS32R2, + 0, + 0, + CPU_MIPS32R2 }, + { "m4kp", + 0, + 0, + ISA_MIPS32R2, + 0, + 0, + CPU_MIPS32R2 }, + { "m14k", + 0, + ASE_MCU, + ISA_MIPS32R2, + 0, + 0, + CPU_MIPS32R2 }, + { "m14kc", + 0, + ASE_MCU, + ISA_MIPS32R2, + 0, + 0, + CPU_MIPS32R2 }, + { "m14ke", + 0, + ASE_DSP | ASE_DSPR2 | ASE_MCU, + ISA_MIPS32R2, + 0, + 0, + CPU_MIPS32R2 }, + { "m14kec", + 0, + ASE_DSP | ASE_DSPR2 | ASE_MCU, + ISA_MIPS32R2, + 0, + 0, + CPU_MIPS32R2 }, + { "24kc", + 0, + 0, + ISA_MIPS32R2, + 0, + 0, + CPU_MIPS32R2 }, + { "24kf2_1", + 0, + 0, + ISA_MIPS32R2, + 0, + 0, + CPU_MIPS32R2 }, + { "24kf", + 0, + 0, + ISA_MIPS32R2, + 0, + 0, + CPU_MIPS32R2 }, + { "24kf1_1", + 0, + 0, + ISA_MIPS32R2, + 0, + 0, + CPU_MIPS32R2 }, /* Deprecated forms of the above. */ - { "24kfx", 0, 0, ISA_MIPS32R2, CPU_MIPS32R2 }, - { "24kx", 0, 0, ISA_MIPS32R2, CPU_MIPS32R2 }, + { "24kfx", + 0, + 0, + ISA_MIPS32R2, + 0, + 0, + CPU_MIPS32R2 }, + { "24kx", + 0, + 0, + ISA_MIPS32R2, + 0, + 0, + CPU_MIPS32R2 }, /* 24KE is a 24K with DSP ASE, other ASEs are optional. */ - { "24kec", 0, ASE_DSP, ISA_MIPS32R2, CPU_MIPS32R2 }, - { "24kef2_1", 0, ASE_DSP, ISA_MIPS32R2, CPU_MIPS32R2 }, - { "24kef", 0, ASE_DSP, ISA_MIPS32R2, CPU_MIPS32R2 }, - { "24kef1_1", 0, ASE_DSP, ISA_MIPS32R2, CPU_MIPS32R2 }, + { "24kec", + 0, + ASE_DSP, + ISA_MIPS32R2, + 0, + 0, + CPU_MIPS32R2 }, + { "24kef2_1", + 0, + ASE_DSP, + ISA_MIPS32R2, + 0, + 0, + CPU_MIPS32R2 }, + { "24kef", + 0, + ASE_DSP, + ISA_MIPS32R2, + 0, + 0, + CPU_MIPS32R2 }, + { "24kef1_1", + 0, + ASE_DSP, + ISA_MIPS32R2, + 0, + 0, + CPU_MIPS32R2 }, /* Deprecated forms of the above. */ - { "24kefx", 0, ASE_DSP, ISA_MIPS32R2, CPU_MIPS32R2 }, - { "24kex", 0, ASE_DSP, ISA_MIPS32R2, CPU_MIPS32R2 }, + { "24kefx", + 0, + ASE_DSP, + ISA_MIPS32R2, + 0, + 0, + CPU_MIPS32R2 }, + { "24kex", + 0, + ASE_DSP, + ISA_MIPS32R2, + 0, + 0, + CPU_MIPS32R2 }, /* 34K is a 24K with DSP and MT ASE, other ASEs are optional. */ - { "34kc", 0, ASE_DSP | ASE_MT, ISA_MIPS32R2, CPU_MIPS32R2 }, - { "34kf2_1", 0, ASE_DSP | ASE_MT, ISA_MIPS32R2, CPU_MIPS32R2 }, - { "34kf", 0, ASE_DSP | ASE_MT, ISA_MIPS32R2, CPU_MIPS32R2 }, - { "34kf1_1", 0, ASE_DSP | ASE_MT, ISA_MIPS32R2, CPU_MIPS32R2 }, + { "34kc", + 0, + ASE_DSP | ASE_MT, + ISA_MIPS32R2, + 0, + 0, + CPU_MIPS32R2 }, + { "34kf2_1", + 0, + ASE_DSP | ASE_MT, + ISA_MIPS32R2, + 0, + 0, + CPU_MIPS32R2 }, + { "34kf", + 0, + ASE_DSP | ASE_MT, + ISA_MIPS32R2, + 0, + 0, + CPU_MIPS32R2 }, + { "34kf1_1", + 0, + ASE_DSP | ASE_MT, + ISA_MIPS32R2, + 0, + 0, + CPU_MIPS32R2 }, /* Deprecated forms of the above. */ - { "34kfx", 0, ASE_DSP | ASE_MT, ISA_MIPS32R2, CPU_MIPS32R2 }, - { "34kx", 0, ASE_DSP | ASE_MT, ISA_MIPS32R2, CPU_MIPS32R2 }, + { "34kfx", + 0, + ASE_DSP | ASE_MT, + ISA_MIPS32R2, + 0, + 0, + CPU_MIPS32R2 }, + { "34kx", + 0, + ASE_DSP | ASE_MT, + ISA_MIPS32R2, + 0, + 0, + CPU_MIPS32R2 }, /* 34Kn is a 34kc without DSP. */ - { "34kn", 0, ASE_MT, ISA_MIPS32R2, CPU_MIPS32R2 }, + { "34kn", + 0, + ASE_MT, + ISA_MIPS32R2, + 0, + 0, + CPU_MIPS32R2 }, /* 74K with DSP and DSPR2 ASE, other ASEs are optional. */ - { "74kc", 0, ASE_DSP | ASE_DSPR2, ISA_MIPS32R2, CPU_MIPS32R2 }, - { "74kf2_1", 0, ASE_DSP | ASE_DSPR2, ISA_MIPS32R2, CPU_MIPS32R2 }, - { "74kf", 0, ASE_DSP | ASE_DSPR2, ISA_MIPS32R2, CPU_MIPS32R2 }, - { "74kf1_1", 0, ASE_DSP | ASE_DSPR2, ISA_MIPS32R2, CPU_MIPS32R2 }, - { "74kf3_2", 0, ASE_DSP | ASE_DSPR2, ISA_MIPS32R2, CPU_MIPS32R2 }, + { "74kc", + 0, + ASE_DSP | ASE_DSPR2, + ISA_MIPS32R2, + 0, + 0, + CPU_MIPS32R2 }, + { "74kf2_1", + 0, + ASE_DSP | ASE_DSPR2, + ISA_MIPS32R2, + 0, + 0, + CPU_MIPS32R2 }, + { "74kf", + 0, + ASE_DSP | ASE_DSPR2, + ISA_MIPS32R2, + 0, + 0, + CPU_MIPS32R2 }, + { "74kf1_1", + 0, + ASE_DSP | ASE_DSPR2, + ISA_MIPS32R2, + 0, + 0, + CPU_MIPS32R2 }, + { "74kf3_2", + 0, + ASE_DSP | ASE_DSPR2, + ISA_MIPS32R2, + 0, + 0, + CPU_MIPS32R2 }, /* Deprecated forms of the above. */ - { "74kfx", 0, ASE_DSP | ASE_DSPR2, ISA_MIPS32R2, CPU_MIPS32R2 }, - { "74kx", 0, ASE_DSP | ASE_DSPR2, ISA_MIPS32R2, CPU_MIPS32R2 }, + { "74kfx", + 0, + ASE_DSP | ASE_DSPR2, + ISA_MIPS32R2, + 0, + 0, + CPU_MIPS32R2 }, + { "74kx", + 0, + ASE_DSP | ASE_DSPR2, + ISA_MIPS32R2, + 0, + 0, + CPU_MIPS32R2 }, /* 1004K cores are multiprocessor versions of the 34K. */ - { "1004kc", 0, ASE_DSP | ASE_MT, ISA_MIPS32R2, CPU_MIPS32R2 }, - { "1004kf2_1", 0, ASE_DSP | ASE_MT, ISA_MIPS32R2, CPU_MIPS32R2 }, - { "1004kf", 0, ASE_DSP | ASE_MT, ISA_MIPS32R2, CPU_MIPS32R2 }, - { "1004kf1_1", 0, ASE_DSP | ASE_MT, ISA_MIPS32R2, CPU_MIPS32R2 }, + { "1004kc", + 0, + ASE_DSP | ASE_MT, + ISA_MIPS32R2, + 0, + 0, + CPU_MIPS32R2 }, + { "1004kf2_1", + 0, + ASE_DSP | ASE_MT, + ISA_MIPS32R2, + 0, + 0, + CPU_MIPS32R2 }, + { "1004kf", + 0, + ASE_DSP | ASE_MT, + ISA_MIPS32R2, + 0, + 0, + CPU_MIPS32R2 }, + { "1004kf1_1", + 0, + ASE_DSP | ASE_MT, + ISA_MIPS32R2, + 0, + 0, + CPU_MIPS32R2 }, /* interaptiv is the new name for 1004kf. */ - { "interaptiv", 0, ASE_DSP | ASE_MT, ISA_MIPS32R2, CPU_MIPS32R2 }, - { "interaptiv-mr2", 0, + { "interaptiv", + 0, + ASE_DSP | ASE_MT, + ISA_MIPS32R2, + 0, + 0, + CPU_MIPS32R2 }, + { "interaptiv-mr2", + 0, ASE_DSP | ASE_EVA | ASE_MT | ASE_MIPS16E2 | ASE_MIPS16E2_MT, - ISA_MIPS32R3, CPU_INTERAPTIV_MR2 }, + ISA_MIPS32R3, + 0, + 0, + CPU_INTERAPTIV_MR2 }, /* M5100 family. */ - { "m5100", 0, ASE_MCU, ISA_MIPS32R5, CPU_MIPS32R5 }, - { "m5101", 0, ASE_MCU, ISA_MIPS32R5, CPU_MIPS32R5 }, + { "m5100", + 0, + ASE_MCU, + ISA_MIPS32R5, + 0, + 0, + CPU_MIPS32R5 }, + { "m5101", + 0, + ASE_MCU, + ISA_MIPS32R5, + 0, + 0, + CPU_MIPS32R5 }, /* P5600 with EVA and Virtualization ASEs, other ASEs are optional. */ - { "p5600", 0, ASE_VIRT | ASE_EVA | ASE_XPA, ISA_MIPS32R5, CPU_MIPS32R5 }, + { "p5600", + 0, + ASE_VIRT | ASE_EVA | ASE_XPA, + ISA_MIPS32R5, + 0, + 0, + CPU_MIPS32R5 }, /* MIPS 64 */ - { "5kc", 0, 0, ISA_MIPS64, CPU_MIPS64 }, - { "5kf", 0, 0, ISA_MIPS64, CPU_MIPS64 }, - { "20kc", 0, ASE_MIPS3D, ISA_MIPS64, CPU_MIPS64 }, - { "25kf", 0, ASE_MIPS3D, ISA_MIPS64, CPU_MIPS64 }, + { "5kc", + 0, + 0, + ISA_MIPS64, + 0, + 0, + CPU_MIPS64 }, + { "5kf", + 0, + 0, + ISA_MIPS64, + 0, + 0, + CPU_MIPS64 }, + { "20kc", + 0, + ASE_MIPS3D, + ISA_MIPS64, + 0, + 0, + CPU_MIPS64 }, + { "25kf", + 0, + ASE_MIPS3D, + ISA_MIPS64, + 0, + 0, + CPU_MIPS64 }, /* Broadcom SB-1 CPU core. */ - { "sb1", 0, ASE_MIPS3D | ASE_MDMX, ISA_MIPS64, CPU_SB1 }, + { "sb1", + 0, + ASE_MIPS3D | ASE_MDMX, + ISA_MIPS64, + 0, + 0, + CPU_SB1 }, /* Broadcom SB-1A CPU core. */ - { "sb1a", 0, ASE_MIPS3D | ASE_MDMX, ISA_MIPS64, CPU_SB1 }, + { "sb1a", + 0, + ASE_MIPS3D | ASE_MDMX, + ISA_MIPS64, + 0, + 0, + CPU_SB1 }, /* MIPS 64 Release 2. */ /* Loongson CPU core. */ /* -march=loongson3a is an alias of -march=gs464 for compatibility. */ - { "loongson3a", 0, ASE_LOONGSON_MMI | ASE_LOONGSON_CAM | ASE_LOONGSON_EXT, - ISA_MIPS64R2, CPU_GS464 }, - { "gs464", 0, ASE_LOONGSON_MMI | ASE_LOONGSON_CAM | ASE_LOONGSON_EXT, - ISA_MIPS64R2, CPU_GS464 }, - { "gs464e", 0, ASE_LOONGSON_MMI | ASE_LOONGSON_CAM | ASE_LOONGSON_EXT - | ASE_LOONGSON_EXT2, ISA_MIPS64R2, CPU_GS464E }, - { "gs264e", 0, ASE_LOONGSON_MMI | ASE_LOONGSON_CAM | ASE_LOONGSON_EXT - | ASE_LOONGSON_EXT2 | ASE_MSA | ASE_MSA64, ISA_MIPS64R2, CPU_GS264E }, + { "loongson3a", + 0, + ASE_LOONGSON_MMI | ASE_LOONGSON_CAM | ASE_LOONGSON_EXT, + ISA_MIPS64R2, + 0, + 0, + CPU_GS464 }, + { "gs464", + 0, + ASE_LOONGSON_MMI | ASE_LOONGSON_CAM | ASE_LOONGSON_EXT, + ISA_MIPS64R2, + 0, + 0, + CPU_GS464 }, + { "gs464e", + 0, + ASE_LOONGSON_MMI | ASE_LOONGSON_CAM | ASE_LOONGSON_EXT | ASE_LOONGSON_EXT2, + ISA_MIPS64R2, + 0, + 0, + CPU_GS464E }, + { "gs264e", + 0, + ASE_LOONGSON_MMI | ASE_LOONGSON_CAM | ASE_LOONGSON_EXT | ASE_LOONGSON_EXT2 + | ASE_MSA | ASE_MSA64, + ISA_MIPS64R2, + 0, + 0, + CPU_GS264E }, /* Cavium Networks Octeon CPU core. */ - { "octeon", 0, 0, ISA_MIPS64R2, CPU_OCTEON }, - { "octeon+", 0, 0, ISA_MIPS64R2, CPU_OCTEONP }, - { "octeon2", 0, 0, ISA_MIPS64R2, CPU_OCTEON2 }, - { "octeon3", 0, ASE_VIRT | ASE_VIRT64, ISA_MIPS64R5, CPU_OCTEON3 }, + { "octeon", + 0, + 0, + ISA_MIPS64R2, + 0, + 0, + CPU_OCTEON }, + { "octeon+", + 0, + 0, + ISA_MIPS64R2, + 0, + 0, + CPU_OCTEONP }, + { "octeon2", + 0, + 0, + ISA_MIPS64R2, + 0, + 0, + CPU_OCTEON2 }, + { "octeon3", + 0, + ASE_VIRT | ASE_VIRT64, + ISA_MIPS64R5, + 0, + 0, + CPU_OCTEON3 }, /* RMI Xlr */ - { "xlr", 0, 0, ISA_MIPS64, CPU_XLR }, + { "xlr", + 0, + 0, + ISA_MIPS64, + 0, + 0, + CPU_XLR }, /* Broadcom XLP. XLP is mostly like XLR, with the prominent exception that it is MIPS64R2 rather than MIPS64. */ - { "xlp", 0, 0, ISA_MIPS64R2, CPU_XLR }, + { "xlp", + 0, + 0, + ISA_MIPS64R2, + 0, + 0, + CPU_XLR }, /* MIPS 64 Release 6. */ - { "i6400", 0, ASE_VIRT | ASE_MSA, ISA_MIPS64R6, CPU_MIPS64R6}, - { "i6500", 0, ASE_VIRT | ASE_MSA | ASE_CRC | ASE_GINV, - ISA_MIPS64R6, CPU_MIPS64R6}, - { "p6600", 0, ASE_VIRT | ASE_MSA, ISA_MIPS64R6, CPU_MIPS64R6}, + { "i6400", + 0, + ASE_VIRT | ASE_MSA, + ISA_MIPS64R6, + 0, + 0, + CPU_MIPS64R6}, + { "i6500", + 0, + ASE_VIRT | ASE_MSA | ASE_CRC | ASE_GINV, + ISA_MIPS64R6, + 0, + 0, + CPU_MIPS64R6}, + { "p6600", + 0, + ASE_VIRT | ASE_MSA, + ISA_MIPS64R6, + 0, + 0, + CPU_MIPS64R6}, /* End marker. */ - { NULL, 0, 0, 0, 0 } + { NULL, 0, 0, 0, 0, 0, 0 } }; @@ -20253,6 +20956,29 @@ mips_parse_cpu (const char *option, const char *cpu_string) : ISA_MIPS1); } + /* mipsisa32rN-linux-gnu refuses -n32/-64 swtiches: + -march=mips32r6 is not compatible with the selected ABI + mipsisa64rN-linux-gnu -o32 generates objects with 64bit CPU: + ELF 32-bit LSB relocatable, MIPS, MIPS64 rel2 version 1 (SYSV) + They are not good default behaviors: Let's alter the CPU info. + We treat it some like -march=from-abi. */ + if (strcasecmp (option, "default CPU") == 0) + { + p = mips_cpu_info_from_name (cpu_string); + if (p != NULL && (p->flags & MIPS_CPU_IS_ISA)) + { + if (ABI_NEEDS_32BIT_REGS (mips_abi)) + return mips_cpu_info_from_isa (p->isa_32); + + if (ABI_NEEDS_64BIT_REGS (mips_abi)) + return mips_cpu_info_from_isa (p->isa_64); + + if (file_mips_opts.gp >= 0) + return mips_cpu_info_from_isa (file_mips_opts.gp == 32 + ? p->isa_32 : p->isa_64); + } + } + /* 'default' has traditionally been a no-op. Probably not very useful. */ if (strcasecmp (cpu_string, "default") == 0) return 0; @@ -20292,6 +21018,19 @@ mips_cpu_info_from_arch (int arch) return NULL; } + +static const struct mips_cpu_info * +mips_cpu_info_from_name (const char* name) +{ + int i; + + for (i = 0; mips_cpu_info_table[i].name != NULL; i++) + if (strcasecmp (mips_cpu_info_table[i].name, name) == 0) + return (&mips_cpu_info_table[i]); + + return NULL; +} + static void show (FILE *stream, const char *string, int *col_p, int *first_p) diff --git a/gas/testsuite/gas/mips/mips.exp b/gas/testsuite/gas/mips/mips.exp index 91cf8b11077..46823cfcf11 100644 --- a/gas/testsuite/gas/mips/mips.exp +++ b/gas/testsuite/gas/mips/mips.exp @@ -559,7 +559,7 @@ if { [istarget mips*-*-vxworks*] } { "MIPS invalid switch to SVR4 PIC from VxWorks PIC" } elseif { [istarget mips*-*-*] } { set addr32 [expr [istarget mipstx39*-*-*] || [istarget mips-*-linux*] || [istarget mipsel-*-linux*] \ - || [istarget mipsisa32-*-linux*] || [istarget mipsisa32el-*-linux*]] + || [istarget mipsisa32*-*-linux*] || [istarget mipsisa32*el-*-linux*]] set has_newabi [expr [istarget *-*-irix6*] || [istarget mips*-*-linux*] \ || [istarget mips*-sde-elf*] || [istarget mips*-mti-elf*] \ || [istarget mips*-img-elf*]] @@ -2059,7 +2059,7 @@ if { [istarget mips*-*-vxworks*] } { run_dump_test "module-override" run_dump_test "module-defer-warn1" - run_list_test "module-defer-warn2" "-32" + run_list_test "module-defer-warn2" "-32 -mips1" foreach testopt [list -mfp32 -mfpxx -mfp64 "-mfp64-noodd" \ -msingle-float -msoft-float] {