From patchwork Tue Dec 20 10:26:26 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Szabolcs Nagy X-Patchwork-Id: 88568 Delivered-To: patch@linaro.org Received: by 10.140.20.101 with SMTP id 92csp1645546qgi; Tue, 20 Dec 2016 02:26:56 -0800 (PST) X-Received: by 10.84.209.193 with SMTP id y59mr9883905plh.96.1482229616479; Tue, 20 Dec 2016 02:26:56 -0800 (PST) Return-Path: Received: from sourceware.org (server1.sourceware.org. [209.132.180.131]) by mx.google.com with ESMTPS id l21si2119007pgo.10.2016.12.20.02.26.56 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 20 Dec 2016 02:26:56 -0800 (PST) Received-SPF: pass (google.com: domain of binutils-return-95005-patch=linaro.org@sourceware.org designates 209.132.180.131 as permitted sender) client-ip=209.132.180.131; Authentication-Results: mx.google.com; dkim=pass header.i=@sourceware.org; spf=pass (google.com: domain of binutils-return-95005-patch=linaro.org@sourceware.org designates 209.132.180.131 as permitted sender) smtp.mailfrom=binutils-return-95005-patch=linaro.org@sourceware.org DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:message-id:date:from:mime-version:to:cc :subject:content-type; q=dns; s=default; b=X8v8nuawr4DqtYDxhzWUO mXOYZ2ditZLOpag9/KO+L2c0tQlabOhw1pDr1YVAt9rjLryMUBie57haf1yXYgmZ 7po+afjQ2D1VaOec1uwr3fxIyh6Oa29pf38Upj594Tu+lVYgUejjsG/rTPHOKgDY 3Me4q7QQPx8YrEALpWRsVM= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:message-id:date:from:mime-version:to:cc :subject:content-type; s=default; bh=HDl3ZesN/6JBe30GdeaGqYFrdXI =; b=YReKGRuLu8doiGOqF8QJlfcd+9uxy/k92ItMeaXiLbKBdaKhkJPa7lS0qSc qZzKhI62YVGdwco3bO6Ai+JgMnHyIQOF2aIUIe3I423Pr4sn2QO3KZNAO7/y8tjp rDXluAeyil6dUg3Jh6KnOvgVDpFpLV7LWHbZPGl05RlhHKxk= Received: (qmail 76171 invoked by alias); 20 Dec 2016 10:26:44 -0000 Mailing-List: contact binutils-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: binutils-owner@sourceware.org Delivered-To: mailing list binutils@sourceware.org Received: (qmail 76159 invoked by uid 89); 20 Dec 2016 10:26:43 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=AWL, BAYES_00, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS, SPF_PASS autolearn=ham version=3.3.2 spammy=ras, Limited, sum, 2016-12-20 X-HELO: EUR02-HE1-obe.outbound.protection.outlook.com Received: from mail-eopbgr10069.outbound.protection.outlook.com (HELO EUR02-HE1-obe.outbound.protection.outlook.com) (40.107.1.69) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 20 Dec 2016 10:26:32 +0000 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Szabolcs.Nagy@arm.com; Received: from [10.2.206.73] (217.140.96.140) by DB6PR0802MB2488.eurprd08.prod.outlook.com (10.172.251.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.789.14; Tue, 20 Dec 2016 10:26:28 +0000 Message-ID: <58590752.4090605@arm.com> Date: Tue, 20 Dec 2016 10:26:26 +0000 From: Szabolcs Nagy User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.8.0 MIME-Version: 1.0 To: Binutils CC: Subject: [PATCH][AArch64] Add separate feature flag for weaker release consistent load insns X-ClientProxiedBy: DB5PR0101CA0023.eurprd01.prod.exchangelabs.com (10.165.200.161) To DB6PR0802MB2488.eurprd08.prod.outlook.com (10.172.251.23) X-MS-Office365-Filtering-Correlation-Id: 1d17927f-02f0-493e-e2c2-08d428c2a892 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:DB6PR0802MB2488; X-Microsoft-Exchange-Diagnostics: 1; DB6PR0802MB2488; 3:UsAiIVsX7Yw9z7fC7jsEqg3oW7Zywc8kCFMiI6pi8FTeoY7YSgwG9j6ed5dHYyXyzOlua6Qnpo1dxBKj7gNrUS++qUqE/IvUXAZkyhVqS5+LO3fXFnAD1rPUXwKR5QPHC1TDUDUxpP0Bxx98eyP/p2FtsECYJzx5g28lPZWfX652WhbylWoxKGczwONYYYfm396jOc5GDfsJA41DGEXlJDSf4h8q1YujyUGM6oYgUxTWQhHZSIOM0giLFgZTrJDYoKIlNnfWXQeN8AgFx0IYzQ== X-Microsoft-Exchange-Diagnostics: 1; DB6PR0802MB2488; 25:yXjEWXw/Zz2uu+QbHUJVrfjQ+ELHhL/VdruP3D1bdE6A/q7vgdsvzrndS2jaoy+nRLjf9lhNueHLM2gPmVI64taE1b9se9iw198VIPWy6Vnckpo5qcJMU3fLaSuGijNN8hMg/gwHX4cXynWydZPCOMKcICRomWLtQZ5ILOWgtw5JvRnk6CMt/iTtzwj7/WzgT3gTm5JXN+KRDw0RtFo8AwY3wBLFgmsG7RNQlsZ9bYV6TAn/RHvZB6LVeBTuQzXFhI8CXFw6s917SRCvCHMAfJo2wD3t5AjNmMlZvefGjJlQUTH7KYF/oC3xdOKNB8WfNanAhL/t5iggMTbma2jlNJ4xOmaSxcntBbTudqCDrnrua45CbrYvgZJonC3SVE4/NPBAaVGnAJUHHzvqn1uSK8paA5Jg1sZO0yBZNNL3MdDdHr2zuq6MmnR2GOIgc3CwPnbsmj+6fGZkK1TM4DziLKUeiRiGZgpdg49OZD2B6k59YpUhJI3GFd8WQFl905LxwwPZ/emF/Mh5aQvhBk79kR1QimQIJTgDUuRSyjs3bdr+3JA1yKg+c/qGhooZVC2EUba8wrp1y2K4SAw3rzuE9+LxaJMbV7WYw920KamV/BamV5UzMcEWHmINgCuNAxK1XrV/v4oElCdRG1Diwx/zb1q2t+wyR96dOXe8gX2Ef/o4wf7fiabB4LWieV3B0PhTqF8hMik63WLezXIabS6qrCVbl3vDX37N0Jqxf28bBxQsyezZ0LbG/3PuZLVDEqeQdrT/lFxSUd5l6WvDhL8D2IkkGjITYIGyRiaXAvZpSMvF9ug9ML0DKkh3ZpWCReGck6rrud2Hs21JUo5I6xdOHY59qDzms99PypPVKYtDVZg= X-Microsoft-Exchange-Diagnostics: 1; DB6PR0802MB2488; 31:rzQ4+qQl4DbHUWCro8hCqEj9ZUYkFc9cbBl/9MCrUyXBkO+NJ6gZdHkmMaJgfZWb1GzKrpqAinbIZKzDXrYAdr8X3LslOMWs/zM3bdVIxVz0IEDO7iyBEItIRsJCiAUR9KbQ+rb3FOQaL/+ETLDQTLW9aWcYyWF+PKa+aLaZlnMJv/VNRXJ7Zs7uSqsRJV3BZh5Ub+Yol+0AI67X31QT/onUhOgNGvWqwjJpggPXj1u+xcKijMFTHrJFWgLhS+bz5fHus9+ELrBxhfcoIUmAC7IPvrE3Zpbc5HMxm+XIPBr2BzTY0/EFMxTqsT6AuAMT; 20:HeeKmy0gAOury+rEiq8PKBBIacP5mEbTdjaYLb9847pPqx9f+ezFz9IO05z9UOpLYrIOufXwZe6jg8L1h81UUQBY6J7W+nUite+FjAOlO141/MxO1Mo1XDZEUl6X3iM3B/G/pXNVgmBaS3a0ts66/1zCFlOIPWc7X8CTTpSGCYg= NoDisclaimer: True X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(180628864354917); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(102415395)(6040375)(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046)(6055026)(6041248)(20161123564025)(20161123560025)(20161123555025)(20161123558021)(20161123562025)(6072148); SRVR:DB6PR0802MB2488; BCL:0; PCL:0; RULEID:; SRVR:DB6PR0802MB2488; X-Microsoft-Exchange-Diagnostics: 1; DB6PR0802MB2488; 4:j7LudGx3W0LwYcdexn+1j5zZM+y8c2S6bXHboVSZSk8F2tMZBvPQuK48B1two1kRchh3dK3NOadwUYj9CbPJ9WaUicG7zFHa/sEWAfvna9r2EY2FfnAvfmVTFIDceXWXBiOovJ3PK/zhTMmXht9Bu9AV/qvFAA1X177iBWmT684oL06BwqccZiDUAMeWyzcYrf77G0+ubIb1P1j/8vnV5TTckSacc4l4vm/i0NBfjLyl8TABMGy6lGRxn2nX4ZAOiDGTs2DSMg1y9JozIRGL3O1DLv4I7o/qQJgixpp/w5RsXExUqD8zRfjv41IlKNJ3R1ccjT5/BpTU81aEnRlY4yG3qFIptiT6aWH4+boeFWRVrKEb6La5Ot6pNyRl8zLL1h3IdHtpRunP+SjmPHWUJo+9sQYdYabcmdBlzTEwBpCtGWyPIo/jHRyBpL0c3i9m6bjakJ2vEAdQsxbVIjUa3qSNouthdRzyJihuKB1+J+ojlXwjT5qcclrHMKYByGvnJ4bMQt6w1hgDv/zkTtG48VOUG3f+HlM3vbJvvcBLH8bV/SBPHct0McCCJYjvuRqoMfQ3wkuqOXFCm4YxsTV/sMQwfDOpuPc7D6p5z+HihmtucAnYAkdNP6BaOzQS0WQyXVnOPyI/3t/+JmHqtOkkVMtoeulER0ohjdf5gGt8kvlXO4nPhPLBNZQbv1eC+nTd X-Forefront-PRVS: 0162ACCC24 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(6049001)(7916002)(39840400002)(39860400002)(39410400002)(39450400003)(39850400002)(199003)(189002)(377424004)(2906002)(65956001)(36756003)(106356001)(270700001)(105586002)(305945005)(7736002)(5660300001)(512874002)(86362001)(5890100001)(68736007)(42186005)(84326002)(83506001)(4326007)(568964002)(110136003)(8676002)(4001350100001)(97736004)(65816999)(6116002)(81166006)(81156014)(64126003)(2476003)(92566002)(5000100001)(189998001)(122286003)(6916009)(450100001)(101416001)(99136001)(87266999)(50986999)(4001150100001)(90366009)(21490400002)(65806001)(25786008)(66066001)(3846002)(117636001)(59896002)(4610100001)(38730400001)(6486002)(77096006)(54356999)(62816006); DIR:OUT; SFP:1101; SCL:1; SRVR:DB6PR0802MB2488; H:[10.2.206.73]; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: arm.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DB6PR0802MB2488; 23:cRFRp7P+J0fqFktvhMFtNjs567eA5s3i2IrEcSC?= =?us-ascii?Q?UFsXeyHztCj09vqQdCxNRw+55C+x3bO/UyU2D3y4twml/PbKptdm+6m9rChF?= =?us-ascii?Q?u6rH4oVYD+TsZNwnSTSNKDDhPoF+Qp/0AyzKlqkTD0+WwV/i7gnVCRH8xyi/?= =?us-ascii?Q?o6oJDEiQ6QdiaS1vT4+GTMKP0bfRo6FeOFTwciwAmP3MnzsBIehDIKFjfjaL?= =?us-ascii?Q?lPP/+wE7UPWM3wKTGET0S3OHHFNDoonv4UzqrXMfwdEvzyNqu3tJZV7O5F+Q?= =?us-ascii?Q?dkYfS9ccPW1cWJlh6W5gY2hpDKLYstsu0NEpZh+8z55qw9NTuW84XtLNlw9P?= =?us-ascii?Q?nNHHKX4SdPpP1ra87NDTbM0HcHzMzgDm3/1Rxivlzow5FgOyorpO61/FTIv+?= =?us-ascii?Q?/HWDoQaBriBOtp86TdnNoUQLVpvDUjxZ438r/53elh8ElTM/nQklyb36JWLh?= =?us-ascii?Q?BLkPyTPilG4XaixBJlwnKxULDbsrSjhHYSAUeW8ugBrpkLmxzuXXWMmRxPbH?= =?us-ascii?Q?HoBpe8N9eIw2ASxlpSeQ850eqKvo+gdfQqclsGWIciABifKlui44+voVVDaz?= =?us-ascii?Q?72fBEJ56wtnFOFqVOXRLaLAMNR+EvChR04D5MGXS7jpBfrrs6eaS3xGwE6Jh?= =?us-ascii?Q?ltN2e1j2PBa1Ki/ZvNQcR4jearxdkX8iD90cT866QJHJA09Tenp0ysVtCXHo?= =?us-ascii?Q?refZWUsajmK9XAdkn8KskIANELzw+gBR4lXIZvgl5IS472q9UTwZdmS0/NmZ?= =?us-ascii?Q?IKl6TUZxp3RxLW1ZtTiWoqIZASlF2h0JTBPFZrFb207prXumU7KdTIfJzPgn?= =?us-ascii?Q?O4RVeppIZDHsublZQOXYJFSc1mUL5lZeQMvrGcfo4xEL9MKDye7DhWZp/wG4?= =?us-ascii?Q?KJke+4k1ceT5ZdZvJgdcsF454keQo8GBf7OdFStKF9ERx5lKGRuL2QC9Bcv+?= =?us-ascii?Q?HwkS6I78RvgosE/LM9ljCX5ryPdRHoc5vuaT/AscTOfsF+KGik3LXs/Pl/6D?= =?us-ascii?Q?FCgImNv9PMBuZonGbQ8e8DYQp96LPsS0KQJsAaqQhxW5yEzMJrMsjBMfYELG?= =?us-ascii?Q?3OA1tmHmtav3YTfW13Hm15Vldu5XibdtiR+f3zTBJfn1GUsx6N2ZqVvQ2el0?= =?us-ascii?Q?EeykhYaj6o4HPWOb6DuNNezfBzV8ATx2JOVFZ5MRjvzn5HO9SuK1Pj5lsIvf?= =?us-ascii?Q?L6J5k4Qude9Tn+B+XKx/G8nCQwG+Wgze3ai31YiPq90v/qpld0iSWVAu2mE4?= =?us-ascii?Q?3AcckboXtJmG8pvyNaQ6RfEQxzbFYbnf90+qxJo+EFyi5j64nXjnpYGfflKc?= =?us-ascii?Q?HlqyGqTATEPKjzZ15baUw0HaZw7icqamA7i7r4JXYJRBR/abFJnfrwZKtNMS?= =?us-ascii?Q?EdOKblZMgOuvV/kTWyOKJiBqoSxqAsVLp9YSGNjBwjJVJ/ezw3AdIhgQcLFG?= =?us-ascii?Q?+zGyZADsgj00FUlQT2+AML05mxvIzA9PDYWmqZtwDOLVmiYwktcELcma40tD?= =?us-ascii?Q?jIN0S8O4m1ECplz+FzwFyQpsZt1DzigBVAMYm1/k4uDcHJFrHVOMJV+0nq90?= =?us-ascii?Q?+LBq3CvTfT1ZDetBPBCP2BOn6MgyVNSiTWqoqXcwDB2M2JeL9wZW5cPt6+sn?= =?us-ascii?Q?j?= X-Microsoft-Exchange-Diagnostics: 1; DB6PR0802MB2488; 6:mc756rweJhnnqHrLbntGFRichY1sUnwHUAOfEN5x9pkCcRA9uFofxWykT+03R1GlPvjMwVf7xuqLwn1y+Euw6J38MZnc8E8K3cGCx/syxpLKK72AV8yzyuBd9FskhpwZS14Hkqsjrq8uKEGlvMAELXYw/leJJZPCP1CIT7GdnjNZN82FgDMAFN5z6kzPM3fPh+vsBkHnyzumC3PeO+7rGctu1fq36AJfjt/9hYwovpfTLMmudcetOc5cvAm89oFFK5FCfNFw1NWi3VbL8Uy7WGWRFARqcMx6NkwJo99pKPGAemQcRFKSiXNkV0S2HYWKSp4nJ2lmRIHo6NHN1cgDoU9DJ0wEpZXjZ9zFhXn0ZLhmE3UKSn5/UBT9NBycNC4ukUnvXrIXumth4CHg7Y6FEJwk7UPuvr/CK6z4J2Ev8ZTRhTNYUTcy96ok7JdTxjRbKlkdLCH2wVED3u6c9K6z4w==; 5:5A60mFueSSK4MeJPrhcfMeQYcr8hRbB1LiV4Bgj6znTt/+KTQ2JNl7tdZVGWJ8m1XgfasZPXuzUWXl6GeS+C9GUw3/zAjwjZ/RnQUOzaYd9X/HOZrN2nyb6q1JagrT2ieBxQr/R6b1jC9NLDbXXARA==; 24:B/TUQ0T25n5mXWO6PgzdT37TV7mzk3M3D4WBT+t7B6p5dqUMYYCuCtxLIpHjRtiS6nNwddvTwS63JK5SW9bEVnq7h0zQGkTA4Nj0ubqK68k= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DB6PR0802MB2488; 7:ji60hqQoGzPmjFwEDAjG1RCFlNGzeUbc6qk2XPju85R3vHskX6Z2JLDEh36Bm6+76mQeNeiYUtKL+6kTjyM/ML7P2hb+ccIGNuhc906y/ignNKEsuhj3ssshudL7Tg85enEffwJduP6ngfmq8TW30tBTwL8Oeq9u6wqc2VTRKwo6wV3a7UMNNrcRd5gjaTghMxfUGZnEcD3tciy+Jsg3octHgj6muhUIQQSc4zbKE0nlmD8sKgcIoJKB7bOxUvhoHv2GA/tau1qSek6tuf8MQklaS9i2/la/AAtBfdl6bb6cvC8TCc0Mf+WWnt68QDHTpQXh0/qLBOc0BfqG3mQBBs6ZwQVytf/kiS8NZoTS/q77Ks9I4Aqr+ZfvNnhD7hm40GhtM6FFHL9dQ5P5zznjkjh8mncm14ut70mJvlM+YTRlVxoM7c7tIKfGFdj1xqhQl+we7gYYiVHBchCPWTOf/A== X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Dec 2016 10:26:28.2307 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0802MB2488 X-IsSubscribed: yes The weaker release consistency support of ARMv8.3-A is allowed as an optional extension for ARMv8.2-A, so separate command line option and feature flag is added: -march=armv8.2-a+rcpc turns LDAPR, LDAPRB, LDAPRH instructions on. opcodes/ 2016-12-20 Szabolcs Nagy * aarch64-tbl.h (RCPC, RCPC_INSN): Define. (aarch64_opcode_table): Use RCPC_INSN. include/ 2016-12-20 Szabolcs Nagy * opcode/aarch64.h (AARCH64_FEATURE_RCPC): Define. (AARCH64_ARCH_V8_3): Update. gas/ 2016-12-20 Szabolcs Nagy * config/tc-aarch64.c (aarch64_features): Add rcpc. * doc/c-aarch64.texi (AArch64 Extensions): Document rcpc. * testsuite/gas/aarch64/ldst-exclusive-armv8_3.d: Rename to ... * testsuite/gas/aarch64/ldst-rcpc.d: This. * testsuite/gas/aarch64/ldst-exclusive-armv8_3.s: Rename to ... * testsuite/gas/aarch64/ldst-rcpc.s: This. * testsuite/gas/aarch64/ldst-rcpc-armv8_2.d: New test. diff --git a/gas/config/tc-aarch64.c b/gas/config/tc-aarch64.c index 8b839c6..82343fe 100644 --- a/gas/config/tc-aarch64.c +++ b/gas/config/tc-aarch64.c @@ -8435,6 +8435,8 @@ static const struct aarch64_option_cpu_value_table aarch64_features[] = { {"sve", AARCH64_FEATURE (AARCH64_FEATURE_SVE, 0), AARCH64_FEATURE (AARCH64_FEATURE_FP | AARCH64_FEATURE_SIMD, 0)}, + {"rcpc", AARCH64_FEATURE (AARCH64_FEATURE_RCPC, 0), + AARCH64_ARCH_NONE}, {NULL, AARCH64_ARCH_NONE, AARCH64_ARCH_NONE}, }; diff --git a/gas/testsuite/gas/aarch64/ldst-exclusive-armv8_3.d b/gas/testsuite/gas/aarch64/ldst-exclusive-armv8_3.d deleted file mode 100644 index b0de88a..0000000 --- a/gas/testsuite/gas/aarch64/ldst-exclusive-armv8_3.d +++ /dev/null @@ -1,20 +0,0 @@ -#objdump: -dr -#as: -march=armv8.3-a - -.*: file format .* - -Disassembly of section \.text: - -0000000000000000 <.*>: - 0: 38bfc0e1 ldaprb w1, \[x7\] - 4: 38bfc0e1 ldaprb w1, \[x7\] - 8: 38bfc0e1 ldaprb w1, \[x7\] - c: 78bfc0e1 ldaprh w1, \[x7\] - 10: 78bfc0e1 ldaprh w1, \[x7\] - 14: 78bfc0e1 ldaprh w1, \[x7\] - 18: b8bfc0e1 ldapr w1, \[x7\] - 1c: b8bfc0e1 ldapr w1, \[x7\] - 20: b8bfc0e1 ldapr w1, \[x7\] - 24: f8bfc0e1 ldapr x1, \[x7\] - 28: f8bfc0e1 ldapr x1, \[x7\] - 2c: f8bfc0e1 ldapr x1, \[x7\] diff --git a/gas/testsuite/gas/aarch64/ldst-exclusive-armv8_3.s b/gas/testsuite/gas/aarch64/ldst-exclusive-armv8_3.s deleted file mode 100644 index bfa41e0..0000000 --- a/gas/testsuite/gas/aarch64/ldst-exclusive-armv8_3.s +++ /dev/null @@ -1,22 +0,0 @@ - /* ARMv8.3 weaker release consistency load instructions. */ - - /* , [{,#0}] */ - .macro LR32 op - \op w1, [x7] - \op w1, [x7, #0] - \op w1, [x7, 0] - .endm - - /* , [{,#0}] */ - .macro LR64 op - \op x1, [x7] - \op x1, [x7, #0] - \op x1, [x7, 0] - .endm - -func: - .irp op, ldaprb, ldaprh, ldapr - LR32 \op - .endr - - LR64 ldapr diff --git a/gas/testsuite/gas/aarch64/ldst-rcpc-armv8_2.d b/gas/testsuite/gas/aarch64/ldst-rcpc-armv8_2.d new file mode 100644 index 0000000..469629d --- /dev/null +++ b/gas/testsuite/gas/aarch64/ldst-rcpc-armv8_2.d @@ -0,0 +1,21 @@ +#objdump: -dr +#as: -march=armv8.2-a+rcpc +#source: ldst-rcpc.s + +.*: file format .* + +Disassembly of section \.text: + +0000000000000000 <.*>: + 0: 38bfc0e1 ldaprb w1, \[x7\] + 4: 38bfc0e1 ldaprb w1, \[x7\] + 8: 38bfc0e1 ldaprb w1, \[x7\] + c: 78bfc0e1 ldaprh w1, \[x7\] + 10: 78bfc0e1 ldaprh w1, \[x7\] + 14: 78bfc0e1 ldaprh w1, \[x7\] + 18: b8bfc0e1 ldapr w1, \[x7\] + 1c: b8bfc0e1 ldapr w1, \[x7\] + 20: b8bfc0e1 ldapr w1, \[x7\] + 24: f8bfc0e1 ldapr x1, \[x7\] + 28: f8bfc0e1 ldapr x1, \[x7\] + 2c: f8bfc0e1 ldapr x1, \[x7\] diff --git a/gas/testsuite/gas/aarch64/ldst-rcpc.d b/gas/testsuite/gas/aarch64/ldst-rcpc.d new file mode 100644 index 0000000..b0de88a --- /dev/null +++ b/gas/testsuite/gas/aarch64/ldst-rcpc.d @@ -0,0 +1,20 @@ +#objdump: -dr +#as: -march=armv8.3-a + +.*: file format .* + +Disassembly of section \.text: + +0000000000000000 <.*>: + 0: 38bfc0e1 ldaprb w1, \[x7\] + 4: 38bfc0e1 ldaprb w1, \[x7\] + 8: 38bfc0e1 ldaprb w1, \[x7\] + c: 78bfc0e1 ldaprh w1, \[x7\] + 10: 78bfc0e1 ldaprh w1, \[x7\] + 14: 78bfc0e1 ldaprh w1, \[x7\] + 18: b8bfc0e1 ldapr w1, \[x7\] + 1c: b8bfc0e1 ldapr w1, \[x7\] + 20: b8bfc0e1 ldapr w1, \[x7\] + 24: f8bfc0e1 ldapr x1, \[x7\] + 28: f8bfc0e1 ldapr x1, \[x7\] + 2c: f8bfc0e1 ldapr x1, \[x7\] diff --git a/gas/testsuite/gas/aarch64/ldst-rcpc.s b/gas/testsuite/gas/aarch64/ldst-rcpc.s new file mode 100644 index 0000000..bfa41e0 --- /dev/null +++ b/gas/testsuite/gas/aarch64/ldst-rcpc.s @@ -0,0 +1,22 @@ + /* ARMv8.3 weaker release consistency load instructions. */ + + /* , [{,#0}] */ + .macro LR32 op + \op w1, [x7] + \op w1, [x7, #0] + \op w1, [x7, 0] + .endm + + /* , [{,#0}] */ + .macro LR64 op + \op x1, [x7] + \op x1, [x7, #0] + \op x1, [x7, 0] + .endm + +func: + .irp op, ldaprb, ldaprh, ldapr + LR32 \op + .endr + + LR64 ldapr diff --git a/include/opcode/aarch64.h b/include/opcode/aarch64.h index 69645d0..d8aa80c 100644 --- a/include/opcode/aarch64.h +++ b/include/opcode/aarch64.h @@ -53,6 +53,7 @@ typedef uint32_t aarch64_insn; #define AARCH64_FEATURE_RAS 0x04000000 /* RAS Extensions. */ #define AARCH64_FEATURE_PROFILE 0x08000000 /* Statistical Profiling. */ #define AARCH64_FEATURE_SVE 0x10000000 /* SVE instructions. */ +#define AARCH64_FEATURE_RCPC 0x20000000 /* RCPC instructions. */ /* Architectures are the sum of the base and extensions. */ #define AARCH64_ARCH_V8 AARCH64_FEATURE (AARCH64_FEATURE_V8, \ @@ -70,7 +71,8 @@ typedef uint32_t aarch64_insn; | AARCH64_FEATURE_F16 \ | AARCH64_FEATURE_RAS) #define AARCH64_ARCH_V8_3 AARCH64_FEATURE (AARCH64_ARCH_V8_2, \ - AARCH64_FEATURE_V8_3) + AARCH64_FEATURE_V8_3 \ + | AARCH64_FEATURE_RCPC) #define AARCH64_ARCH_NONE AARCH64_FEATURE (0, 0) #define AARCH64_ANY AARCH64_FEATURE (-1, 0) /* Any basic core. */ diff --git a/opcodes/aarch64-tbl.h b/opcodes/aarch64-tbl.h index 0efd98e..d0b9b2d 100644 --- a/opcodes/aarch64-tbl.h +++ b/opcodes/aarch64-tbl.h @@ -1940,6 +1940,8 @@ static const aarch64_feature_set aarch64_feature_fp_v8_3 = AARCH64_FEATURE (AARCH64_FEATURE_V8_3 | AARCH64_FEATURE_FP, 0); static const aarch64_feature_set aarch64_feature_simd_v8_3 = AARCH64_FEATURE (AARCH64_FEATURE_V8_3 | AARCH64_FEATURE_SIMD, 0); +static const aarch64_feature_set aarch64_feature_rcpc = + AARCH64_FEATURE (AARCH64_FEATURE_RCPC, 0); #define CORE &aarch64_feature_v8 #define FP &aarch64_feature_fp @@ -1958,6 +1960,7 @@ static const aarch64_feature_set aarch64_feature_simd_v8_3 = #define ARMV8_3 &aarch64_feature_v8_3 #define FP_V8_3 &aarch64_feature_fp_v8_3 #define SIMD_V8_3 &aarch64_feature_simd_v8_3 +#define RCPC &aarch64_feature_rcpc #define CORE_INSN(NAME,OPCODE,MASK,CLASS,OP,OPS,QUALS,FLAGS) \ { NAME, OPCODE, MASK, CLASS, OP, CORE, OPS, QUALS, FLAGS, 0, NULL } @@ -1986,6 +1989,8 @@ static const aarch64_feature_set aarch64_feature_simd_v8_3 = FLAGS | F_STRICT, TIED, NULL } #define V8_3_INSN(NAME,OPCODE,MASK,CLASS,OPS,QUALS,FLAGS) \ { NAME, OPCODE, MASK, CLASS, 0, ARMV8_3, OPS, QUALS, FLAGS, 0, NULL } +#define RCPC_INSN(NAME,OPCODE,MASK,CLASS,OPS,QUALS,FLAGS) \ + { NAME, OPCODE, MASK, CLASS, 0, RCPC, OPS, QUALS, FLAGS, 0, NULL } struct aarch64_opcode aarch64_opcode_table[] = { @@ -2982,9 +2987,9 @@ struct aarch64_opcode aarch64_opcode_table[] = CORE_INSN ("ldaxp", 0x887f8000, 0xbfe08000, ldstexcl, 0, OP3 (Rt, Rt2, ADDR_SIMPLE), QL_R2NIL, F_GPRSIZE_IN_Q), CORE_INSN ("stlr", 0x889ffc00, 0xbfe08000, ldstexcl, 0, OP2 (Rt, ADDR_SIMPLE), QL_R1NIL, F_GPRSIZE_IN_Q), CORE_INSN ("ldar", 0x88dffc00, 0xbfeffc00, ldstexcl, 0, OP2 (Rt, ADDR_SIMPLE), QL_R1NIL, F_GPRSIZE_IN_Q), - V8_3_INSN ("ldaprb", 0x38bfc000, 0xfffffc00, ldstexcl, OP2 (Rt, ADDR_SIMPLE), QL_W1_LDST_EXC, 0), - V8_3_INSN ("ldaprh", 0x78bfc000, 0xfffffc00, ldstexcl, OP2 (Rt, ADDR_SIMPLE), QL_W1_LDST_EXC, 0), - V8_3_INSN ("ldapr", 0xb8bfc000, 0xbffffc00, ldstexcl, OP2 (Rt, ADDR_SIMPLE), QL_R1NIL, F_GPRSIZE_IN_Q), + RCPC_INSN ("ldaprb", 0x38bfc000, 0xfffffc00, ldstexcl, OP2 (Rt, ADDR_SIMPLE), QL_W1_LDST_EXC, 0), + RCPC_INSN ("ldaprh", 0x78bfc000, 0xfffffc00, ldstexcl, OP2 (Rt, ADDR_SIMPLE), QL_W1_LDST_EXC, 0), + RCPC_INSN ("ldapr", 0xb8bfc000, 0xbffffc00, ldstexcl, OP2 (Rt, ADDR_SIMPLE), QL_R1NIL, F_GPRSIZE_IN_Q), /* Limited Ordering Regions load/store instructions. */ _LOR_INSN ("ldlar", 0x88df7c00, 0xbfe08000, ldstexcl, OP2 (Rt, ADDR_SIMPLE), QL_R1NIL, F_GPRSIZE_IN_Q), _LOR_INSN ("ldlarb", 0x08df7c00, 0xffe08000, ldstexcl, OP2 (Rt, ADDR_SIMPLE), QL_W1_LDST_EXC, 0),