From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 36524 invoked by alias); 14 Mar 2018 10:11:33 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 36514 invoked by uid 89); 14 Mar 2018 10:11:32 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-24.6 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,RCVD_IN_DNSWL_NONE,SPF_HELO_PASS,SPF_PASS,URIBL_ABUSE_SURBL autolearn=ham version=3.3.2 spammy=wx, XX, ww, Hx-languages-length:4003 X-HELO: EUR02-HE1-obe.outbound.protection.outlook.com Received: from mail-eopbgr10074.outbound.protection.outlook.com (HELO EUR02-HE1-obe.outbound.protection.outlook.com) (40.107.1.74) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 14 Mar 2018 10:11:31 +0000 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Sudi.Das@arm.com; Received: from [10.2.206.246] (217.140.96.140) by AM2PR08MB0210.eurprd08.prod.outlook.com (2a01:111:e400:8431::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.567.14; Wed, 14 Mar 2018 10:11:26 +0000 To: "gcc-patches@gcc.gnu.org" Cc: Kyrill Tkachov , Ramana Radhakrishnan , Richard Earnshaw , nd From: Sudakshina Das Subject: [PATCH][ARM][PR82989] Fix unexpected use of NEON instructions for shifts Message-ID: Date: Wed, 14 Mar 2018 10:55:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------0DD48294FC693B5D518AB3EB" X-ClientProxiedBy: HE1PR0701CA0047.eurprd07.prod.outlook.com (2603:10a6:3:9e::15) To AM2PR08MB0210.eurprd08.prod.outlook.com (2a01:111:e400:8431::23) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: aa50b0d7-bd1f-47cd-f3b6-08d58993f2eb X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(7020095)(4652020)(48565401081)(5600026)(4604075)(2017052603328)(7153060)(49563074)(7193020);SRVR:AM2PR08MB0210; X-Microsoft-Exchange-Diagnostics: 1;AM2PR08MB0210;3:p+MmezJ7DtUfb0xrBn+ld4Ew0VSN4xJv1TSQ9keWXUUylI2S9+vRz3h8eBJbkitA/S5nEQF1tefji/3cF50xJpvSlKE1ptr3XND93u1gwC2o7eS9cYfRlWoKI6nK8dqSxd/aO211U3iPbLPCQWj6USXgfxy9KxDiSJ4yoJvS6ObJ/xtYHWUvkpM2bv4fszp5D6eCbyWLIJ3ExCUUByf5cLbsJSBdO8s4sgyGWuGsbWFBmilI4dPDgyxQxgfg42Wi;25:18paGsNYDjZw3osx02DVUyWRnjYvCKoitY8bptvz/q432+3qD1HknV926zy12lx5saLK+LrL1MmWiWHqrOF9FjQgubZMoPlGzyiY4I3Xy66cSuCqFAvdbGVxXqvmCI2tcN/x6sq1xhttDnj5EwxX1X3/mIIyCEB3EojvIzfzYhQt+D8TnWheeO11zv2t5tQclvZedOoe94hryQwEN6iMA9LkirIw7PYZQPwKm/2L/4bakLYEjwt31ZSyLgpaMCTcD/w/F+uFq7QDmPBiC35/3nQ16CibHPTotbSGNLH0sPIp85m443NBZtGzVLqCaimiH1/dfUxHsrPNUB4BZednxXLaj7kYNcXC01589eUHnB4=;31:7dtrlCtgSphTOFf5Wi2e7+f08TgKKJoQCNor3qZbP7b8tvmS6gWJ/6AKTjTVxD7vEd/Y6oKGc2VNS+/yonOd0LdUIfYYtszylcHV5s88sPIGHppXD1roeDkIX74exOQrnLJOvJexBP+pOMLVqgSpBIb5V5Q/wkSXYA55ZWEXVscFllMgOwQA84BlqzOJwbDEps+Fc5LyW6oPvmN+hGj1enGkn9Tmq7J/O3iHZ1q41Fk= X-MS-TrafficTypeDiagnostic: AM2PR08MB0210: NoDisclaimer: True X-Microsoft-Exchange-Diagnostics: 1;AM2PR08MB0210;20:PcSHklgCTuXGr4rlvdhMah6zsRnDOlM3FbidfLwvFtYj37leUaAnoVC5Euvx1ORR4JBeV0EJfrOG/HSOsxZLPLbi5MzotAtUpSRa27NklKV3sz9rtBKUR8v0PsxCmZvbS6boH7ad4DDeaFEHlyKcfaU+3SukaCZ/mrm9pQ/4RiQ=;4:cOoRkkRVzR3WpKlQCykkECPz+g7D39aXkQ99SIWEfXydkwTLsnEO6lEl2QWIvJT/biUWMyxHD6fw5yidWvivzI8CiOA5agHzPYpvksHULLcDaHT+8No8Eef20TCcrPk0yQFnCCpNHRT6PPSX9AWK1UjWwuW9Ieq+XacAAWcM7nZHOxBq0IpntP+33udqFV0vH9q98FFMgyov+rF+d+FYYBUiQC67mTJHzeucTQ8OivphNPcy+5LwUbHvlL7T8hcYYrO7oZdjVK54ssZQh15PWV4bfOFMmMGmwfqNY0lKK/n+88RvbHVwKgqlk2N6a8Q2iP5CYLSs5EkG3R4fBu5GrFCYc8tVgreMGu5BDKrugPc= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(202176839429093)(180628864354917); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(8211001083)(102415395)(6040522)(2401047)(5005006)(8121501046)(3231221)(2230133)(944501244)(52105095)(93006095)(93001095)(3002001)(10201501046)(6055026)(6041310)(20161123558120)(20161123562045)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011);SRVR:AM2PR08MB0210;BCL:0;PCL:0;RULEID:;SRVR:AM2PR08MB0210; X-Forefront-PRVS: 0611A21987 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(6049001)(376002)(396003)(366004)(39860400002)(39380400002)(346002)(199004)(377424004)(54534003)(189003)(2501003)(5660300001)(106356001)(59450400001)(97736004)(6486002)(2351001)(105586002)(2906002)(386003)(81156014)(6116002)(5000100001)(478600001)(4610100001)(25786009)(64126003)(7736002)(86362001)(84326002)(81166006)(4326008)(3846002)(72206003)(6916009)(8936002)(5640700003)(305945005)(8676002)(65826007)(6666003)(53936002)(5890100001)(2476003)(68736007)(77096007)(52116002)(21490400003)(1857600001)(26005)(16576012)(568964002)(31686004)(16526019)(270700001)(316002)(37036004)(31696002)(54906003)(58126008)(33964004)(36756003)(65806001)(65956001)(16586007)(66066001)(59010400001);DIR:OUT;SFP:1101;SCL:1;SRVR:AM2PR08MB0210;H:[10.2.206.246];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;AM2PR08MB0210;23:IUtW5ANPYR/L8hGPbWcI5MOZ4BMx9bj9XgxH64WGQ?= =?us-ascii?Q?0WGcH8Mwg+4jQyDORhkeatDKXoupRAM2XPZpSyA2PPtDbfCzinHhDnva52zx?= =?us-ascii?Q?Iql712N8jeMHtv4Qi+5Ba/ZiLqt6lnrrKbivsEFQOemNgHo3tVcn0jNS4B1R?= =?us-ascii?Q?mybYShBzAJStkG/cF2aIMMkKhkYlLDdgCLiJidWiDTzoPZeppCp5HFDn279s?= =?us-ascii?Q?J4kVO82p1w6WNK3SBTxVrZoSHxEK9rfCbHio83TbRcGo1I+x7mdElTizaA/+?= =?us-ascii?Q?YwY8oZPHT5K/LLg6t/kL7NmQruU9fHtYAYWk7Dc0IjYA/u50RsulzAPprqcs?= =?us-ascii?Q?4wL2tQiweQnaicgnVFW/pld41aMiVIX+/dQK3XCV+rpYm+7t8W9JsyTlp9BF?= =?us-ascii?Q?uP52r0qRGZp8c+9rwLGX+Jog7fHJwkhG5jAPa7IzBOrpet9fX9QtfTkW7BBa?= =?us-ascii?Q?Hi/wMlbnynXq39c0mAxfTG/BtsPNkg8zpLDk0YMWYXH4yf37xTucq6TVhPfg?= =?us-ascii?Q?Tmv/GoGRDjdshLNZyly1+vUrG1uFYwjf7YbuDaEWnUugT6tQXo/jezkvvuuB?= =?us-ascii?Q?kdzfeB+WnRy5ATEbkA/jkmYL4FEziBkakPc4RecI6PesHA1Qcfz5pCJsY0iO?= =?us-ascii?Q?uSnIR1LQT/uxTfM0OAUE/izOFhT34osD+811LPBZ9EB3U9LbLarpGgFQ7xrn?= =?us-ascii?Q?X4Ct/2nXwBkKsAH9eDUTUWWflei580AOu30td8lwCPiRtorAgRHb87w+9jTg?= =?us-ascii?Q?tPCcpuXmofosIaWonNOOkqcsAf7+Pqh5Yb6fd3gm/u4lanFYD08weT2vZmOt?= =?us-ascii?Q?CeHMy+UrrC52msfUrhRSgusuEVtmFLFzEO7H0sRhiaRABsyDFtha82YB097E?= =?us-ascii?Q?mYtQP5PSyNWDFrfRIcdi0cY/2kSYRruB0VkQ1z9r2FDgf6M3L0PI32E0JbeF?= =?us-ascii?Q?++h+S/W5dsePa1Me04RrQrC5rx93BW4gyw1/++43tOLcio9w6s4etfPciOEN?= =?us-ascii?Q?GonvB6Dnj7debgzEFv9W8EUQYdCl30uKBXSIA+Xp9xQweThBt1Dnz5H7rBOa?= =?us-ascii?Q?xSmbVwkAQJAMqbWIDgZZsKY9VFeqf9WDY+54Pctq2U0N+Gr9E++hSHQeCHwe?= =?us-ascii?Q?AgL82cDkJwyji7E+s6EARFceb1jATg2xmViXNd4GcmKO0kVx/f1wwXrQYHon?= =?us-ascii?Q?xhI7BnjLyx08t5x+AKOzu7IclLeV92Vlwzhg63kWELWke1GCPEv15wZMkjfJ?= =?us-ascii?Q?+JsaH8bMj14xJy0irTee/AWrFwGMPaTlzODI+5+yItKqZxE9XkhB+6nFWhDK?= =?us-ascii?Q?8qY21TCzyms9IL1iMpmqthABAwqTLwO1GwDhyulGMXuOpf9LcOykSR6mBNrR?= =?us-ascii?Q?yz4SBHeGaWwZTlEHmky3at87B3sSphMuLuoTedpWWzbDSM8LEjaM7uNwPSKR?= =?us-ascii?Q?5b6TFMT1FoH5DmMfsJDjuHz2e/pABIx2kS4CA4vbHQL5tfx1Ij9rVwpQbKoP?= =?us-ascii?Q?0PDZW7Hcd31kjaKLbAGNfYmY2ynC06U19TSH0hPSbAKckDO/yS/D02sczgVY?= =?us-ascii?Q?DNJZOwIWlwSURumW1Ps2aMpe5+DbMPfyv8ulM0=3D?= X-Microsoft-Antispam-Message-Info: 6NQj30Qg9Zb+OfVxgXyfXF294TDcCL04yC+2KtVz6T7QsGpHDMku8Nukl6xitgNENNcYq7QzivPzq4pPEgs3/BxjqiuotTHz1Lsqmwa00vrg0PSfvyauUk7wlU2dtd1g+gPfKTochF8+V0PvTDPw6lLYJOtNwXHASArTdTOB4WHduyL2fPe+W1ZZVGrnd6ON6YfnjdsRwukYMRRk+Q2oJRZdUDj6exZj/B/ykpvZE98DJ5Hk47wgwxXgpltAp9/7wv01moI9oXMxvTsbStFIfdBMi18COK5RPaumGZ3W9lgrgZ3uyaxso4Q9Hi4nqnQvwSrZLnZ00DFMpd8mdZU/Eg== X-Microsoft-Exchange-Diagnostics: 1;AM2PR08MB0210;6:LQVBRSqwNfshLZdz48tuzrzgjGm4bVfokslK0y/ENe7MA68oKCn2r+sOABRlUwweBze4jadUcogVlhaEWbqitpfAW4GcT4Vxatyh2Ck2fMK/rDNw5niGblySeXYCUfSs2QyIyGoXaTRv9ms1CEQ59QzrtwXpK/Lti3vDVD2OrVyC+2hhRRm35cynkLmyJYm2h0ZtY3uBnufDKglR9DfJN9mHqpJar5X309x9hhAse3umBC57j0PIpvHwcGyJMf1IJNaX7g9XeKgtGBNJ7GQ3Fn9v8YdxGSjBZCTMCpVW3M/zARl0qt18yCzuud3Vb+qDItfyl7Kb3+b1Ukx76ytsIYYegEqvQDpBxBSLudzHxJ0=;5:3Qg+v2pEvARWoF22geB33Pn7uiURqfx44yxoOixSk9UnLZVii72rlAUOmPxKIhZaswJXSUzriG9eEkRS0/+MSCYJ+gh0Vp8iMr1H4n5ddtz9WKCtGjdQE3Jrzf+pLj7Ee5eL18FEC0yehDhsQplhXGWAASImV1rlJ/uNhEQFWjs=;24:kInp6dmnWaDkTMGga9TMTSGjjbrR2qYNTatC5JNs0wPfpErGEdESMjuI26+3TA1TdjYZ/JfUSdVSnGjmiWtAZ9RKUk20VsJoe9T4bl9fPNE=;7:+g6tkPrJIG7zN1xCU9+S0kiWPjx+eS4Ss9SD7N7EduD5b9jBDteEY/iaO0DoQThH7f/3qQoFdeFpUHDeRcZ9UKFARSpKyQqdmc2Dy+tpJAZxgNDEU6vnf7Ga+LAOFkeAK949w3992UwTV0dAnzbu6ezMCpd996ms1/ZKWoK6YQ6geUSg1mp/AKsHDRRfukHNMGdQmZkopMtbbAP5UU/GmHCox7gZSviIS29wsPBqUa2ma6vtTyWwzoFmQArtrf+V SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Mar 2018 10:11:26.4669 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: aa50b0d7-bd1f-47cd-f3b6-08d58993f2eb X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM2PR08MB0210 X-IsSubscribed: yes X-SW-Source: 2018-03/txt/msg00645.txt.bz2 This is a multi-part message in MIME format. --------------0DD48294FC693B5D518AB3EB Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Content-length: 905 Hi This patch fixes PR82989 so that we avoid NEON instructions when -mneon-for-64bits is not enabled. This is more of a short term fix for the real deeper problem of making and early decision of choosing or rejecting NEON instructions. There is now a new ticket PR84467 to deal with the longer term solution. (Please refer to the discussion in the bug report for more details). Testing: Bootstrapped and regtested on arm-none-linux-gnueabihf and added a new test case based on the test given on the bug report. Ok for trunk and backports for gcc-7 and gcc-6 branches? Sudi *** gcc/ChangeLog *** 2018-03-14 Sudakshina Das * config/arm/neon.md (ashldi3_neon): Update ?s for constraints to favor GPR over NEON registers. (di3_neon): Likewise. *** gcc/testsuite/ChangeLog *** 2018-03-14 Sudakshina Das * gcc.target/arm/pr82989.c: New test. --------------0DD48294FC693B5D518AB3EB Content-Type: text/x-patch; name="pr82989.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="pr82989.diff" Content-length: 3189 diff --git a/gcc/config/arm/neon.md b/gcc/config/arm/neon.md index 6a6f5d7..1646b21 100644 --- a/gcc/config/arm/neon.md +++ b/gcc/config/arm/neon.md @@ -1180,12 +1180,12 @@ ) (define_insn_and_split "ashldi3_neon" - [(set (match_operand:DI 0 "s_register_operand" "= w, w,?&r,?r,?&r, ?w,w") - (ashift:DI (match_operand:DI 1 "s_register_operand" " 0w, w, 0r, 0, r, 0w,w") - (match_operand:SI 2 "general_operand" "rUm, i, r, i, i,rUm,i"))) - (clobber (match_scratch:SI 3 "= X, X,?&r, X, X, X,X")) - (clobber (match_scratch:SI 4 "= X, X,?&r, X, X, X,X")) - (clobber (match_scratch:DI 5 "=&w, X, X, X, X, &w,X")) + [(set (match_operand:DI 0 "s_register_operand" "= w, w, &r, r, &r, ?w,?w") + (ashift:DI (match_operand:DI 1 "s_register_operand" " 0w, w, 0r, 0, r, 0w, w") + (match_operand:SI 2 "general_operand" "rUm, i, r, i, i,rUm, i"))) + (clobber (match_scratch:SI 3 "= X, X, &r, X, X, X, X")) + (clobber (match_scratch:SI 4 "= X, X, &r, X, X, X, X")) + (clobber (match_scratch:DI 5 "=&w, X, X, X, X, &w, X")) (clobber (reg:CC_C CC_REGNUM))] "TARGET_NEON" "#" @@ -1276,7 +1276,7 @@ ;; ashrdi3_neon ;; lshrdi3_neon (define_insn_and_split "di3_neon" - [(set (match_operand:DI 0 "s_register_operand" "= w, w,?&r,?r,?&r,?w,?w") + [(set (match_operand:DI 0 "s_register_operand" "= w, w, &r, r, &r,?w,?w") (RSHIFTS:DI (match_operand:DI 1 "s_register_operand" " 0w, w, 0r, 0, r,0w, w") (match_operand:SI 2 "reg_or_int_operand" " r, i, r, i, i, r, i"))) (clobber (match_scratch:SI 3 "=2r, X, &r, X, X,2r, X")) diff --git a/gcc/testsuite/gcc.target/arm/pr82989.c b/gcc/testsuite/gcc.target/arm/pr82989.c new file mode 100644 index 0000000..1295ee6 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/pr82989.c @@ -0,0 +1,38 @@ +/* PR target/82989 */ +/* { dg-do compile } */ +/* { dg-require-effective-target arm_neon_ok } */ +/* { dg-skip-if "avoid conflicts with multilib options" { *-*-* } { "-mcpu=*" } { "-mcpu=cortex-a8" } } */ +/* { dg-skip-if "avoid conflicts with multilib options" { *-*-* } { "-mfpu=*" } { "-mfpu=neon" } } */ +/* { dg-skip-if "avoid conflicts with multilib options" { *-*-* } { "-mfloat-abi=*" } { "-mfloat-abi=hard" } } */ +/* { dg-options "-O2 -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=hard" } */ +/* { dg-add-options arm_neon } */ + +typedef unsigned long long uint64_t; + +void f_shr_imm (uint64_t *a ) +{ + *a += *a >> 32; +} +/* { dg-final { scan-assembler-not "vshr*" } } */ + +void f_shr_reg (uint64_t *a, uint64_t b) +{ + *a += *a >> b; +} +/* { dg-final { scan-assembler-not "vshl*" } } */ +/* Only 2 times for f_shr_reg. f_shr_imm should not have any. */ +/* { dg-final { scan-assembler-times {lsr\tr[0-9]+, r[0-9]+, r[0-9]} 2 } } */ + +void f_shl_imm (uint64_t *a) +{ + *a += *a << 32; +} +/* { dg-final { scan-assembler-not "vshl*" } } */ + +void f_shl_reg (uint64_t *a, uint64_t b) +{ + *a += *a << b; +} +/* { dg-final { scan-assembler-not "vshl*" } } */ +/* Only 2 times for f_shl_reg. f_shl_imm should not have any. */ +/* { dg-final { scan-assembler-times {lsl\tr[0-9]+, r[0-9]+, r[0-9]} 2 } } */ --------------0DD48294FC693B5D518AB3EB--