From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 42821 invoked by alias); 24 May 2018 17:50:31 -0000 Mailing-List: contact gcc-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-owner@gcc.gnu.org Received: (qmail 42800 invoked by uid 89); 24 May 2018 17:50:31 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.7 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_NONE,SPF_HELO_PASS,SPF_PASS autolearn=ham version=3.3.2 spammy=Application, preserves, PCS X-HELO: NAM02-CY1-obe.outbound.protection.outlook.com Received: from mail-cys01nam02on0081.outbound.protection.outlook.com (HELO NAM02-CY1-obe.outbound.protection.outlook.com) (104.47.37.81) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 24 May 2018 17:50:29 +0000 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Steve.Ellcey@cavium.com; Received: from sellcey-dt.caveonetworks.com (50.233.148.156) by SN6PR07MB4573.namprd07.prod.outlook.com (2603:10b6:805:5f::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.797.11; Thu, 24 May 2018 17:50:25 +0000 Message-ID: <1527184223.22014.13.camel@cavium.com> Subject: Re: [Aarch64] Vector Function Application Binary Interface Specification for OpenMP From: Steve Ellcey Reply-To: sellcey@cavium.com To: Richard Sandiford , Alan.Haward@arm.com Cc: "Richard Earnshaw (lists)" , Francesco Petrogalli , James Greenhalgh , "Sekhar, Ashwin" , gcc , Marcus Shawcroft , nd Date: Thu, 24 May 2018 17:50:00 -0000 In-Reply-To: <87a7sznw5c.fsf@linaro.org> References: <1518212868.14236.47.camel@cavium.com> <32617133-64DC-4F62-B7A0-A6B417C5B14E@arm.com> <1526487700.29509.6.camel@cavium.com> <1526491802.29509.19.camel@cavium.com> <87a7sznw5c.fsf@linaro.org> Content-Type: text/plain; charset="UTF-8" Mime-Version: 1.0 Content-Transfer-Encoding: 8bit X-ClientProxiedBy: BYAPR07CA0019.namprd07.prod.outlook.com (2603:10b6:a02:bc::32) To SN6PR07MB4573.namprd07.prod.outlook.com (2603:10b6:805:5f::16) X-MS-PublicTrafficType: Email X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(7020095)(4652020)(5600026)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020);SRVR:SN6PR07MB4573; X-Microsoft-Exchange-Diagnostics: 1;SN6PR07MB4573;3:9ewPmnRoN+AV0jYBxI2eNrrIIqSoduwrKCQPhRWs530AoCSMQGkqHn2s4j8YbmEq+W5vTl3ffjOwb60XA1PKbeTyjNfSIa6KeakfzReGek7/1mLyiMbHWS98IiPWddyUgz39cR8QdTkQ8IfO5e2YkdTCQyMrsJ4bA1Kl5mPEo4/fxLToQyrdkCJnb0+/5mmXFDxDS5PQrOea6g1YIzsb6QW6VOlBLccJihKycd6hIXCFsQw3OdgD2ctq8lSSn2rf;25:XGpFr6JKW/E9GSI+BZSN5qgPoH3zEdyIFnxiGLYt7zzvn1pWc7eDVnsec5rlljt0jaeU9lcVYeRR6xm5DCJWkkE9oNZejPMdzWeDdWZLusxK30gCX/T6MiiwoIMrbNgd6V4vH1YoX1hwwDgCLIWCbzrc9BDLQIgEONK/kctqxNFBzZjowDGPH856+nNRYS2rFpqsqA9hUPkNTl3Ke7adv9oPS4m2+MIVBrpFTL2z3mYk0LPeZsWcj1/wO1a9WX71uMp8gYr7YX96+q3oPIxlIOmo9wypfjvH9qd/hfEhb5LsLLEIvYV8ioIK5WxNhg8qD1jqcWXUVeMnccfp9CzzWw==;31:cjbs2Ptw986N5QuA+o4ZLSLfeO49WDspcImvHx7RBnSH3OpeegCFQfZ0gurrbGaalZU0+P6yXmQg4XiWSfD8ncsKTAIiKH0udI+DTiBwetvtMl/9n7S0/20T3EvO24znGHOGbAZ73otz4dc62JUbrRzdEV8wHGwvafTaEjBH2wOS7HeXHkrJB2SxgD/ipgzo73P7D0IHoBNac++ojL5mMw9aQG7iDLdNCYSXPOvVZl4= X-MS-TrafficTypeDiagnostic: SN6PR07MB4573: X-Microsoft-Exchange-Diagnostics: 1;SN6PR07MB4573;20:z8Z78bZuqvRUoVZRoXxkfTKBm/Nymdx+ZEEKYuJngYFkSzXxhRiYeaXx+FYAgdBnTIo6wjp4ROErp6IXTK5DhHZ/C8Vhzu6c+VsZpAZ+4tlaEJaOaWdMah12rh57bsQipqNXmTCg0GwWvNwUi3wdvjKdbVPnZGBPHkTT6BGw1PhBZCL4jyqNhUKfjaoptS+9pzqLsuTXFwNOk1yn0ZPoTFpKNp5Eof+70i74c/63+r6xBUr1rQ7rr1UJe9g184IyO57qRNL9JPrlbtAOnYYjEsQCcaE2f7uMuDAi6pS6jCI1cv1Chr8wX8wGkME28BSDvRz33DvqWXKZTJSFeTBawqhxKypjX1WM14KwqeoaGQPe+hy3TzfZ+MzC8zS6YKU8FSjhW0mbBlhWDg38UrAF6hSjxP5+T+Ra+76Ns/BWsHIun9Ym/AvT/9z/ScCXWgN18UNqcxCv/v7KON0zchorlxK29h51aa87dvNWRuPhB0E3Op82GfV6d1HZuS7rMQjN;4:Xi9XRnjsxaUYUQZ3KW17ZiobQxP2Ni9YDyRiXo4uJXaEjxfm6c8w02xHEWE9ddae3kwZoLFNsNRWMTyEAO7JceXHbrWqHVIEqyO5W7oBOy9pXzXYMdC1FLfN3FXBCPvjV+A7VxKv7OToszgaqAi67SEA7aR301aP3tkz4CNQR+pBprLx3hS9bzpp3OiPE+G+9+Ud3VJHXtlzWo/e4HPpDupsc0ZDnAajlrAfKcx1xLZSeTpZlJCVNG7Kn0u3RJpkRu0W/f30sWlB4N4IGoN6gw== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(93006095)(93001095)(10201501046)(3231254)(944501410)(52105095)(3002001)(149027)(150027)(6041310)(20161123560045)(201703131423095)(201703011903075)(201702281528075)(20161123555045)(201703061421075)(20161123558120)(20161123562045)(20161123564045)(6072148)(201708071742011)(7699016);SRVR:SN6PR07MB4573;BCL:0;PCL:0;RULEID:;SRVR:SN6PR07MB4573; X-Forefront-PRVS: 0682FC00E8 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(7966004)(366004)(346002)(376002)(39860400002)(396003)(39380400002)(377424004)(189003)(199004)(508600001)(3450700001)(53416004)(8936002)(72206003)(5820100001)(103116003)(53936002)(229853002)(6486002)(2906002)(50226002)(2870700001)(6512007)(68736007)(3846002)(6116002)(54906003)(316002)(476003)(2616005)(956004)(11346002)(446003)(486006)(4326008)(7736002)(305945005)(50466002)(25786009)(16526019)(186003)(26005)(36756003)(52116002)(23676004)(43066004)(6506007)(386003)(47776003)(76176011)(66066001)(97736004)(69596002)(8676002)(81156014)(6246003)(81166006)(105586002)(5660300001)(106356001)(93886005)(99106002);DIR:OUT;SFP:1101;SCL:1;SRVR:SN6PR07MB4573;H:sellcey-dt.caveonetworks.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtTTjZQUjA3TUI0NTczOzIzOldaU3hKVmVJdFozSSs0NzhvR3VGdFdxb0kw?= =?utf-8?B?Qy9ibGwwd0VLWXVtVTdZLyt5ZW1ZM0NDTytKOE4reisremJJMldBNis4eVVJ?= =?utf-8?B?NEkxb04vTFJZZUFRYjhEUWpzelJSUnVpSzNSTGtxdE9xL01mSUc2ZExxMldZ?= =?utf-8?B?QzF0SmVPRGcrTGN3Vm1tLzlobVdkQlZybFBlb0hldjRCb1dFK0Y5Ri9DSit4?= =?utf-8?B?ak1Jd2dyQ2t0c0xpL2dJSC9Zb1BydXNyUGcwWGJqQnc1NVVCdzFEa0xqNnR5?= =?utf-8?B?UUtPczQ0aGNhM1g4TFpydkJyTm41Rms4MnpDdXNaNHE4d1ZHV1VCc0N2YVBm?= =?utf-8?B?TC8xcE80QmJLcVJyT1NKbmZGMlVzNWlGaU9IYXQ3cW1Db0lEVC9TOG1TUDBP?= =?utf-8?B?N2pVaUkyTnAzT3d4K3Jod1BxV01ueDl3T2dOaWxwbzFWbkpqRW43RTRHOGlk?= =?utf-8?B?azE0SXJ2M1FxM1VNRko4WjJFZG03WjQ4TDY5VTRLclNBbkp2VlIxaW5XV0Qr?= =?utf-8?B?Wi9ZTkY1K1Fob1c2U0pGV3dUUlJnYXI3L0NsWWFoaXVpM2greFhXSEpXSWNW?= =?utf-8?B?S3hraHNPS3ZnZmNRYVo3cnZ0U1pRbjd1Sjh4QTdCamtGMzlQNm0zTTM3Unht?= =?utf-8?B?RU1VUFp0dFdVTXY1eWZZbCtNblQzL1lrLzNJYTlwUHljeG4rM2JvTzhhUHk5?= =?utf-8?B?bU1OU0ZvdUN6dWJMTjJvSzkxUVBKWG1VbndKeXRuQmJ0bGhlRGYyRUVoa2VN?= =?utf-8?B?OEp5dDhOZ09yWGwwRHZwWFVFcE93NzhlYlpudmZwc0dHVXJLOFlabSt2eVVI?= =?utf-8?B?WEl0YlAxa05Rc0hwWmQzb21ZcU94RVRwNFZKbVhDLzZPMVNUZzZ1OHpESVha?= =?utf-8?B?QnpiVTRUb1AxVzg2Y2hxRmM1S0NFYkdZRGl4UHRDdjliQ0FxcmQ4bjFVeHBw?= =?utf-8?B?cmp0Mk1VT3FJTTFadGNTZWIyUDk4dldkV2NrSFNOalVET0JyTGVhUDl4WWt2?= =?utf-8?B?MVROZFMzdGFnZFVQU0xIM2R1ZWpDMlRUNDdTTm8vcmdNNVpzd0ZSVjJCZ2Nh?= =?utf-8?B?Q3FWZXBxOHRid2pyUVFZdDZILzIvMzR6SlI4TlJpcjI4RXUrcXRxWUwvQTdU?= =?utf-8?B?U3FveXJOTkppVVFYdHluSDVPSEZ5U3V1WnRnTUZPdFpRcDB5UXFWNjhyeTBP?= =?utf-8?B?ZGNDZ214NEtuendqem1zTWNGVFM3MnpSQXV0WDhDQjBvSjNZbGxhSmYxZGlh?= =?utf-8?B?SkdYb3R1S05iR09PVDA5L2hyb0lvK1VUODgrY1B4dTFFeDRUQ2hNWDl0Nzhp?= =?utf-8?B?R0MrWWJvbkhVd1BrT1dsTHRKWmZRdGhsUGN4NmhTelY4c204Q2NBYnBPdmM0?= =?utf-8?B?N1JmbUN1ZmFubFZ6emJHK1ZzOGdnY2JMQ01jVGgwc3VYRGR4RWh6c1NBbnFu?= =?utf-8?B?OHNRcjFDYnNjZGZmWnJjQWhhdHlPSE55eGhmWlozK2Y3dFVSMkVYV0VvK1dT?= =?utf-8?B?TkZJYnJjMk16RDlJc1NjcVFLdXloMUN6R2IwTTQzeU1oZGZ6M2RsdmNmUkVp?= =?utf-8?B?aXlrdEV1ZzMwWTZlZ1g0a0gwcnF4QkV3NGlXa0FLV3NOa2FSYzVoY2pYS2Q2?= =?utf-8?B?cTZYL0pBVG1tcS9Zd0xLdGdYUzB1MUpmbThqcHdwUnZmN3pPdDlNdUJkY0Fa?= =?utf-8?B?d1hSMzd3SytDa1NQN0FBT1VTZ0tyUmppd2NZRzZlb05oaXRGNWdEOHM0dzlr?= =?utf-8?B?akZmK0pyVDhEZk11UitLNFovdmlLTlpCNGl4QU8yc1NTR3p6akRRdHhVbEhG?= =?utf-8?B?b3VyL1ZoY0Q2MEN5K2lnWjJSR2hWYm5XZERudW9TMmY2ekhlUDFvNWtmbFRR?= =?utf-8?Q?w0Rt0Oa6NfROsFY7bdE1QZrK1uCQUCXA?= X-Microsoft-Antispam-Message-Info: 7RAxtPtiqJr7AyGicpJSvv6WUdMV/dljPFIRGgNLVF7qlYp64ocj+6Lqtp/emj7EJDRlYRYXKLElQqJFaXFUo3xIjUHiWQPP1UkpV1hgJtGVIq1iBr7QiS1PEBYUWqfG8yMl9r2MGPPPA8nv9DWUMlqNgFkNVOwEnpivo9RGJ7A74P/yIYyCisHsOz6A9GVz X-Microsoft-Exchange-Diagnostics: 1;SN6PR07MB4573;6:wDiZK5btyZXpVsjm05MNPX1eW3L2dgDnMQCdnjSD1wEO1UygwJzH/1U6hU8bfBUeuGClyI6GT0WyOjlCh1iMJ8avHw5F/VYsiL+yQUHOS5u/3HqAFCwaW/5hKz5mDk7rvbm8BTGtoa46eu/i4gpCJeuVK3iaYPxGLLHq0z4Cofc2LkxZFbnBr+5vZWYUm7NMleSsfjs+hsQ/yIXM1zROgV0H2ivMxhi2MYKxKviAw5mzR2LLaPg6vPW82HGQDjwTWtF+A8VNqeo6VvGWCMjD96peST/T7aTXvVmq2SDb6ukQsAUeWUV90R5a7cAlNTatPTaISypqw1R47DOq0rroc5VKDvz0PfqkO9a280TB1xRaSaxxUB9rZ8iACUTRktJ1gjoe87lSnlHe4d3RO2XDyEmRNPAK78S7peQml8ldc9eZm6JHbUJs3CaKrgxMEFz/NNgeUCublHakYyavbosObg==;5:2umHyYxVpYo/6piXoMoffnvORD763GiySR+F4m7fxnTphYHXStgfBKGsKXRIbjhd+aMEZ4PBM/6X0IpINxJwV2bauqP4/iCd7gYO6ZdlWMojlM/8nllc56Ya3gHKg0ptv3xFuL6ijr/7A4obZPmFgCUSg1tMJxWH6O9ezbueT6k=;24:Czqn7YVWgatQZK4JkAYNhAnYDlxqTg0WupXc+gQHO6KAKKpYXtudg6r7Av3iNXfOfA79j0iYNUAe2rVa6/9iAb3R4nNEIm3ExJCNhSwfjZ8= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;SN6PR07MB4573;7:N1tF0iCInYlyahlyMWJSQHYinbRBYB2FUc+zlAkvIAegkBmFWZpboRZGfuHvm0dL+8A6szOFE4gF8kvOPl3RhQcWoZo7CpDYEOOtn2rD3Zkg8zqKIZppoI1/8ZvGvJntU05J+HSnBHygYXNLgOWAutRzDqPcOIVBLvpwqAUHSdySjWF4tGx9Vm/MlDd+CZ2eSKPaOuBl+U+slUdrkb9LPc1y4Ay1p5vMM/26rIfOvFGw9bv9Sig5naH88rqfITPX X-MS-Office365-Filtering-Correlation-Id: 2d16a3bd-5c73-4366-c17e-08d5c19ed464 X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2018 17:50:25.0472 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 2d16a3bd-5c73-4366-c17e-08d5c19ed464 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR07MB4573 X-SW-Source: 2018-05/txt/msg00215.txt.bz2 On Wed, 2018-05-16 at 22:11 +0100, Richard Sandiford wrote: >  > TARGET_HARD_REGNO_CALL_PART_CLOBBERED is the only current way > of saying that an rtl instruction preserves the low part of a > register but clobbers the high part.  We would need something like > Alan H's CLOBBER_HIGH patches to do it using explicit clobbers. > > Another approach would be to piggy-back on the -fipa-ra > infrastructure > and record that vector PCS functions only clobber Q0-Q7.  If -fipa-ra > knows that a function doesn't clobber Q8-Q15 then that should > override > TARGET_HARD_REGNO_CALL_PART_CLOBBERED.  (I'm not sure whether it does > in practice, but it should :-)  And if it doesn't that's a bug that's > worth fixing for its own sake.) > > Thanks, > Richard Alan, I have been looking at your CLOBBER_HIGH patches to see if they might be helpful in implementing the ARM SIMD Vector ABI in GCC. I have also been looking at the -fipa-ra flag and how it works. I was wondering if you considered using the ipa-ra infrastructure for the SVE work that you are currently trying to support with  the CLOBBER_HIGH macro? My current thought for the ABI work is to mark all the floating point / vector registers as caller saved (the lower half of V8-V15 are currently callee saved) and remove TARGET_HARD_REGNO_CALL_PART_CLOBBERED. This should work but would be inefficient. The next step would be to split get_call_reg_set_usage up into two functions so that I don't have to pass in a default set of registers.  One function would return call_used_reg_set by default (but could return a smaller set if it had actual used register information) and the other would return regs_invalidated by_call by default (but could also return a smaller set). Next I would add a 'largest mode used' array to call_cgraph_rtl_info structure in addition to the current function_used_regs register set. Then I could turn the get_call_reg_set_usage replacement functions into target specific functions and with the information in the call_cgraph_rtl_info structure and any simd attribute information on a function I could modify what registers are really being used/invalidated without being saved. If the called function only uses the bottom half of a register it would not be marked as used/invalidated.  If it uses the entire register and the function is not marked as simd, then the register would marked as used/invalidated.  If the function was marked as simd the register would not be marked because a simd function would save both the upper and lower halves of a callee saved register (whereas a non simd function would only save the lower half). Does this sound like something that could be used in place of your  CLOBBER_HIGH patch? Steve Ellcey sellcey@cavium.com