From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 59179 invoked by alias); 10 Mar 2017 11:45:30 -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 58969 invoked by uid 89); 10 Mar 2017 11:45:20 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: Yes, score=5.2 required=5.0 tests=AWL,BAYES_50,MEDICAL_SUBJECT,RCVD_IN_DNSWL_NONE,SPF_HELO_PASS,SPF_PASS autolearn=no version=3.3.2 spammy=compareelimc, compare-elim.c, COMPARE, UD:compare-elim.c X-HELO: EUR03-AM5-obe.outbound.protection.outlook.com Received: from mail-eopbgr30047.outbound.protection.outlook.com (HELO EUR03-AM5-obe.outbound.protection.outlook.com) (40.107.3.47) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 10 Mar 2017 11:45:18 +0000 Authentication-Results: arm.com; dkim=none (message not signed) header.d=none;arm.com; dmarc=none action=none header.from=arm.com; Received: from [10.2.207.77] (217.140.96.140) by HE1PR0802MB2345.eurprd08.prod.outlook.com (10.172.129.11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.947.12; Fri, 10 Mar 2017 11:45:09 +0000 Message-ID: <58C291C2.1070703@arm.com> Date: Fri, 10 Mar 2017 11:45:00 -0000 From: Kyrylo Tkachov User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.2.0 MIME-Version: 1.0 To: Jakub Jelinek CC: "gcc@gcc.gnu.org" , nd Subject: Re: Right way to represent flag-setting arithmetic instructions in MD files References: <58C27B9A.9010507@foss.arm.com> <20170310103811.GV22703@tucnak> In-Reply-To: <20170310103811.GV22703@tucnak> Content-Type: text/plain; charset="windows-1252"; format=flowed Content-Transfer-Encoding: 7bit X-ClientProxiedBy: VI1PR0802CA0009.eurprd08.prod.outlook.com (10.172.253.147) To HE1PR0802MB2345.eurprd08.prod.outlook.com (10.172.129.11) X-MS-Office365-Filtering-Correlation-Id: 0f9f51eb-0891-407c-9439-08d467aae7d1 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(48565401081);SRVR:HE1PR0802MB2345; X-Microsoft-Exchange-Diagnostics: 1;HE1PR0802MB2345;3:LzlqOV1AyRcsQoxL03Be0RrfGcG74SUVifQSrk7X82YMM7wtyATw6o+3yPGauU7hqvenEUlJLGYcMP+4IGxsUAjb5u1f9rEdugC8l2cnhTjar3msMl6evkndhJ2dlSwfCXVjh3fd3IMTVFAdMGlTFnmGA5FatzyH+U6tHf12PgnZ9rEtnhzmb0JkgQyEHaPF7nx1qhwgxyNxFChW2eYkO0Ezz6iQzxVDm6kVR3KO2Ikf+7HWkdWshPKetusOJ0RjPAQKHp5YP9jnGHuBD8mlDMH7C6Dh8DpYNnhAQipBG3A=;25:NJmddS/vdnQ1zLkCIQFZeAS1Vw8yaDTrmlP7C2m602FUB1XtfmGUamwSXe9koYNCgz/Ayux2TfMRWPMOfW1xxUCleF2/aLx3vhimMv/qzmrFFjGhaKB2Nipsvq0ynH96sNg/Ny1YVSFy2PfBMoqRXmyQETBr2qSigMBeHUkpNu6LYHJFPQ2/zIw+L6IkR1eUK2GtgMeL1bzpcmS0t1FmikGCuckG6Qe0EKAJOILV4zYsg26QUMMrG8LM4kZgWYEx4G1Yn2Ana7m2PRHNyQOleaAJEgzUtBM3jtlLq0p9JruIderdq6gsKb+7cOgYJPon7n8u+hub1JaIvc09HgQGI21ZVv51qijbD7XSXN2tYeN/zNxlJvRAQ/3LCaTuD9jYM2H+iUZNBM9hrlYxh7p8559eIs6C4clUqkWtC/zZEakffxlcep6HLJZPZ5Let53BVa6Io5Yb9y7atpcKDNYtXQ== X-Microsoft-Exchange-Diagnostics: 1;HE1PR0802MB2345;31:GSQkdEvtO0U1I67UuIRblv5QSr0pnD2l5QJMhigNQ1xDN3KIzbOJKfaGU8gXwAvNBLFzG9dLxDzLQZ15AiEJB3CM6wxBSjhQEPyT+I9/7360LMZ/cNbShfvmF5FMh7BECHxx22P9jdHJSVKACH8VZqHNqHXLlMFr4kMsXQmz6rOCC6/44YFzwt3ncD6g20Z5V/0Nhp63ZPVd7wHJTxdjNCM+9SfhxzqgDyoZchjkOjA=;20:nh83YWqFuphndCPrx2xeqzVJNEvDZsA2vnD2T1XWqgnfK9EFnw/gBdrdd3LNefnr5RMcmiexZtt//TSk+pPvKYii4oBvqHSG4uzDx3W7JPYhQnBAYUJ4H2z8WL3a5ZAXmYvyFMN2WWoqQ9SGFpC/N/+FMGLWv36RXwB1XGcSwEc= NoDisclaimer: True X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(22074186197030)(183786458502308); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6055026)(6041248)(20161123560025)(20161123562025)(20161123555025)(20161123564025)(20161123558025)(6072148);SRVR:HE1PR0802MB2345;BCL:0;PCL:0;RULEID:;SRVR:HE1PR0802MB2345; X-Microsoft-Exchange-Diagnostics: 1;HE1PR0802MB2345;4:CQoOIXj9Gl4UyJ0DCh0Ljt7UHWEE8uH1Vn8LJ71y9rbyScp/20CmJPtzanlbOIoj8cyZ6HZMFCLENtIeeXm7Is6QbJ+XmiEhKryJazOanL+X/5Xmyx8QS0cWgwErkBxy11+Uim+28CukqfkFKFcdrtDJdGbQslG7GnABBPJwfOY5uoxVNSeG6hPwwcPTCQce9U2r3nZG2OjthPkMjN9v98WMtwOORHWIf+wKAdfQ7jI8bKOHc/dxIxJldMEfoK8BX8RCViQhB4v5bV4Y+FqudbwE7rmKVuI+4UtkmQ8/6PHW5mkAwNJxVsFO8Rm6yYGmHVdLyO7eUWDxVqD6vXua7nBe4GRN15QR9j24LPB0Q1L6b1Ur/uHo7tGHqL3r3RLseOX55yeqP9NK/5cSa1zsq0E7SZAwBVxLv9gCxO7yNsu1Ehbup7weeXnXfagP94sn+/frzWTNNEha/Z4L0HJTw1LcEJf9VtHmM6DssoLwjr5y/imv9an8esEOg9sd1UrxAcKxvnoWnBUhe9snY/3OPPFDOQOh5pITdPata+dnEbe+f5VXK080K7ZfCkI7hRUWolHrCyL3OTVptAsiI3cUrBkYZpDrpy+vlypUvqO1/0M9QLqumjyXsRNznZ/yTBSw/cn5eNWD3tapa1eHLwGFeNUOJUoOCRzqNR2r8FCkXsXE8SHm8nUkzp2tbuH5Kwa/F04kiS7rUiBq+opIaZDleA== X-Forefront-PRVS: 02426D11FE X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(6049001)(39450400003)(39860400002)(39840400002)(39410400002)(39850400002)(24454002)(53754006)(2950100002)(42186005)(54356999)(6666003)(76176999)(25786008)(50986999)(5660300001)(65816999)(86362001)(6246003)(6486002)(90366009)(229853002)(4001350100001)(189998001)(3846002)(2906002)(6116002)(230700001)(77096006)(36756003)(66066001)(33656002)(6916009)(65956001)(59896002)(110136004)(305945005)(53546006)(7736002)(38730400002)(23746002)(4326008)(6306002)(83506001)(54906002)(53936002)(64126003)(80316001)(47776003)(966004)(81166006)(8676002)(50466002)(43043002);DIR:OUT;SFP:1101;SCL:1;SRVR:HE1PR0802MB2345;H:[10.2.207.77];FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1;HE1PR0802MB2345;23:Smsu83iLgJX94CZwxN6lk2RW7cAwdrI2xcK?= =?Windows-1252?Q?geoIVkAHBnMVp18V2R/js5SUrrh20RnwoE0j4+PFouKBsYOENyeg+JZQ?= =?Windows-1252?Q?3w2+bitr/WjPcw2cdr/dTaeP0FzMgTVcC3FuppHINkEqgetzkb/gx2/1?= =?Windows-1252?Q?baRu00gX+07reZijA7uGFVE15ztIkgsXbQ54p8U8+mFANSerZP7Z47Ly?= =?Windows-1252?Q?RE+NpxLp6h6DJhwMTmNSoQ8d5iNIPEfNdRJDsmOGYF18pdDucQNiJean?= =?Windows-1252?Q?cin55npejRGMhddfMOOLePCmmV0RQoVIwa/5pFq6jnz4LVH66Woe2pUZ?= =?Windows-1252?Q?avug5u+TaIYxvltQ5A5gXOf9sa+45DzO8Y8KdoCXEotSTQX+6FCv3z1F?= =?Windows-1252?Q?1tKMdMWHwWzxoqzo+jrVlSHQDdCnuZ7YMHwFvwO+GTxvWC7uXpKlyoCI?= =?Windows-1252?Q?W1JxHGFr7d7yXl3xNEqgcwxeRMWWsTv/b6jccHC1S98wYpoW/GeJglPi?= =?Windows-1252?Q?UyLJ5H0LbGZfyRIGduacjlwKXwsivaOa7GJulcwq3em+FrY9v/wacaxU?= =?Windows-1252?Q?ZRPxL3bhEo+Z03gYael4HTi3QIF6AqaUpNZbRH6YtbS9MaZZULjDIf13?= =?Windows-1252?Q?MGCL0zLtArozlPpDvQiWBNMe/pKwwta/dNkuy6gZDalypQNpbIFiFTlD?= =?Windows-1252?Q?nhwrqQ/3+ZQt/2/CYTGxC/0YKHPx9QrOoOPp6E5h6xUxlTsLy1/2aqzj?= =?Windows-1252?Q?l9IaOMTi+697DI0GqHFHi2/kZxi44LrG6hJ9AbnwBAXaoc9Grvzvbpa0?= =?Windows-1252?Q?cI2Gt5iUwjHF76ccN5Ety20Sd3JpqNvek5LxlM7cIKURuiwkaLTQVRtg?= =?Windows-1252?Q?Dev6c3dCngDyuj4gB9du+YF/IR6F1EJXku1JhRc2qKi0f85so7XqTyIl?= =?Windows-1252?Q?6Xpgqd1JC3l9csVpyKXsyzJfw1Qbjx2bibR9vxjCMR7ZjdQYx0/6V4l6?= =?Windows-1252?Q?xVlwturnF2I2f6y1f8HShUYS4IhDfRcFoN8j9zMVcFeNKi8eQ9U2EFbt?= =?Windows-1252?Q?JPEDHwESgIFpvU14v1nTi1MJSsk4PcxzUsDJe5AsNAwFe+X2dyc19mU0?= =?Windows-1252?Q?JPUMEZGBpUokJDRRJ2rtbLXOQo9qhbX6dgHcL6vBHCgrBRH5qFC5Vxy4?= =?Windows-1252?Q?E4Mj90NLDHBdyOOJEDHPSFokQXWc0ZAxuAcz9b4O3afr83RuVI0aSOx/?= =?Windows-1252?Q?w8pea9odhJLf7y1niI2r37iwjDuejW66QXqv4BoIZGP6JrBAzLhAOUT5?= =?Windows-1252?Q?H9zP3t9frT6MDnxBP/ehP5c0B/HWDb/fW9K58jba81N8sYevZ2TgyGMx?= =?Windows-1252?Q?jZkpeMwSq4dPc40+2ANbN3p9JSHEeuKw9GWxzC/Fs+b/ihCyv3LiU2Hh?= =?Windows-1252?Q?70pnXtx/ZvdZsReNtfiWwGQP7bKmILhIK/o3KK/Cqrw=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;HE1PR0802MB2345;6:o0ZqISvzGKQoVKgp9sRrgwYDrQSrPkPiMqZ3cScWOUCMP220dwQN2ZWOkeRbUZ1j4lSnCSGc12Yub6ay9GVXejrKIzdBq6rfh+X21n8cekyS5cBGOM0fta7SmCdcXEo5QTc329IncQARQdYHKxYTZIOrMQwUke2xk2GRcj+4JBgN2HP9tdWii6XcR49iy54s+TyN1yQS+VTTQr9K3jv9q3WxST1JTuXJaYCxeXdLP/IH8Fr2G0O59Sg50D+CsjB05IOp/tXxO0jR+99QevhZJ7jzKtMJcmEjWj6ZepLERMrNkjgwO9ZA3+tzy9nG48PFuWTw3wmw7MFUJ5MWAbbAab6cqSKvlGgdBR/nElsA7Joo6oPaAbDSefrG/A8Tuv5Tv4JhYtNdu6vHqGh2c3IGT8QAeC/3Kl3gRMkXSYE55z4=;5:Jx7nyjWKlxC3zVmregiaPQ2dlGAHIT41dcyRsb85xtv/0bAnKdaKnbWa+XtBHF/xioJ3Ktwo6NCB/g2dWoWqb+o9YqKEZxqqC79gLJEjT6EAgGqj6g12fgGGBgjRoTRVOZ5Fs4YtTyreHzQN+Nvyqw==;24:opykmER1XnYmbHXJxb+gw/tR7trYJAn4JNb1f1Zyi+1CA1svxnmV9pXju9JGnNz1gxAIKev41A9CqSjae6IaWWsoaGo/s55x0p8+XuS1J2U= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;HE1PR0802MB2345;7:Ym963lsF7x4NVIJU6up3pbqWiKgAKrDrfWYUqYA2iyb2o0HdVEQySf5BAmOByjqLGbY3RWnPNo4cp6o1KtY5xm3/Edxezr39B7RNH+axGHBR5ESeIRlfU0/yXWPvNvxQkrWcE2m91ihOdxvCZe7s4+1YgLWpBURfPVdthGZel7fvIHKKUiJIrvjVEaeuVRSxJqWmZM69HMM/b+/B/uPC1yKNA3LRAOZV9JOPxWObzT1rtN86uzgCyshxY8HOawycxfUsWQGaZ7RImRqCGwIjzBso+gt1PBmZ5kYYCn8otP8eyEXrwPOhV1ARKDCNxUNfoeXGCTkZHn4Ti3xI7AGNUA== X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Mar 2017 11:45:09.3602 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0802MB2345 X-IsSubscribed: yes X-SW-Source: 2017-03/txt/msg00036.txt.bz2 On 10/03/17 10:38, Jakub Jelinek wrote: > On Fri, Mar 10, 2017 at 10:10:34AM +0000, Kyrill Tkachov wrote: >> Hi all, >> >> Some (many?) targets have instructions that perform an arithmetic operation and set the condition flags based on the result. >> For example, on aarch64, we have instructions like ADDS, SUBS, ANDS etc. >> In the machine description we represent them as a PARALLEL pattern of a COMPARE and the arithmetic operation. >> For example, the ADDS instruction is represented as: >> >> (define_insn "add3_compare0" >> [(set (reg:CC_NZ CC_REGNUM) >> (compare:CC_NZ >> (plus:GPI (match_operand:GPI 1 "register_operand" "%r,r,r") >> (match_operand:GPI 2 "aarch64_plus_operand" "r,I,J")) >> (const_int 0))) >> (set (match_operand:GPI 0 "register_operand" "=r,r,r") >> (plus:GPI (match_dup 1) (match_dup 2)))] >> >> My understanding was that the order of the two in this pattern here doesn't matter because there is >> an implicit PARALLEL around them, but I found that the compare-elimination pass (compare-elim.c) >> assumes that the COMPARE set must be in the second position for it to do the transformations it wants. >> >> Is there a recommended order for specifying the compare and the arithmetic operation in the MD files? >> (in which case we should go through the aarch64 MD files and make sure the patterns are written the right >> way round). Or is the compare-elimination pass just not robust enough? (In which case we should teach it >> to look into both SETs of the pattern). > Please see http://gcc.gnu.org/ml/gcc-patches/2014-12/msg00584.html and > surrounding thread. Thanks, that is helpful. It seems to me that teaching cmpelim to handle either order would not be a very complicated task. Would folks object to making such a change? Kyrill > Jakub