From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 73027 invoked by alias); 29 Oct 2015 04:35:00 -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 73012 invoked by uid 89); 29 Oct 2015 04:34:59 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-0.9 required=5.0 tests=BAYES_00,KAM_LAZY_DOMAIN_SECURITY,RCVD_IN_DNSWL_NONE,SPF_HELO_PASS autolearn=no version=3.3.2 X-HELO: na01-by2-obe.outbound.protection.outlook.com Received: from mail-by2on0100.outbound.protection.outlook.com (HELO na01-by2-obe.outbound.protection.outlook.com) (207.46.100.100) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-SHA256 encrypted) ESMTPS; Thu, 29 Oct 2015 04:34:57 +0000 Received: from SN2PR0701MB1024.namprd07.prod.outlook.com (10.160.57.150) by SN2PR0701MB1023.namprd07.prod.outlook.com (10.160.57.149) with Microsoft SMTP Server (TLS) id 15.1.306.13; Thu, 29 Oct 2015 04:34:54 +0000 Received: from SN2PR0701MB1024.namprd07.prod.outlook.com ([10.160.57.150]) by SN2PR0701MB1024.namprd07.prod.outlook.com ([10.160.57.150]) with mapi id 15.01.0306.003; Thu, 29 Oct 2015 04:34:53 +0000 From: "Hurugalawadi, Naveen" To: "gcc-patches@gcc.gnu.org" Subject: Multiply Optimization in match and Simplify Date: Thu, 29 Oct 2015 08:21:00 -0000 Message-ID: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Naveen.Hurugalawadi@caviumnetworks.com; x-microsoft-exchange-diagnostics: 1;SN2PR0701MB1023;5:Syshc+A2ZkVbLg5/VnBP4pMuU1yT5TBAFaEmQxRnR/n81ytWQDqh0TMVZPXn196WtVCC8Ua9BegB2YlOsAbed8znrkjs70R9LHwNOsqAyie4vaF9t85vrG6zU7GK5/irirbVoMejFgp/tbxvFsThsg==;24:M8jJTZkKAydIXBHA8ijnMrX7320IbuG1fcYsR1Nm8QDT+ZbPCLKlhUCq3HT2v7DvRi81Fn/E7pmY5PtXeSJyGzA3s4laCjtJEqNZZ1rHWkk=;20:fXwPUXUrI1yyKbkAjplZNsJ8429Ss/9XH4/2vwJXx4FCE3IzTyDh0uSzQ3Nl7L4EJwUZbWbdwKBl5FlGlU2Rmw== x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:SN2PR0701MB1023; x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(236414709691187); x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(601004)(2401047)(5005006)(520078)(8121501046)(10201501046)(3002001)(102215026);SRVR:SN2PR0701MB1023;BCL:0;PCL:0;RULEID:;SRVR:SN2PR0701MB1023; x-forefront-prvs: 0744CFB5E8 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(6009001)(377424004)(164054003)(54534003)(189002)(199003)(101416001)(74316001)(5001920100001)(99286002)(5003600100002)(5008740100001)(76576001)(2351001)(10400500002)(4001150100001)(102836002)(5001960100002)(122556002)(87936001)(450100001)(2900100001)(110136002)(105586002)(106116001)(107886002)(5002640100001)(92566002)(106356001)(5004730100002)(97736004)(229853001)(189998001)(81156007)(2501003)(19580405001)(40100003)(50986999)(19580395003)(77096005)(86362001)(99936001)(5890100001)(54356999)(5007970100001)(33656002);DIR:OUT;SFP:1101;SCL:1;SRVR:SN2PR0701MB1023;H:SN2PR0701MB1024.namprd07.prod.outlook.com;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; received-spf: None (protection.outlook.com: caviumnetworks.com does not designate permitted sender hosts) spamdiagnosticoutput: 1:23 spamdiagnosticmetadata: NSPM Content-Type: multipart/mixed; boundary="_002_SN2PR0701MB102448CA48B5A9C045EDBBAE8E200SN2PR0701MB1024_" MIME-Version: 1.0 X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Oct 2015 04:34:52.9614 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN2PR0701MB1023 X-SW-Source: 2015-10/txt/msg03127.txt.bz2 --_002_SN2PR0701MB102448CA48B5A9C045EDBBAE8E200SN2PR0701MB1024_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-length: 1562 Hi, Please find attached the patch that moves some multiply optimizations from fold-const using simplify and match. Please review the patch and let me know if any modifications are required. Tested the patch on X86. Observing following failures:- >> FAIL: gcc.dg/fold-plusmult.c scan-tree-dump-times original " \\* 4" 2 Should the testcase be changed to suit current pattern? >> FAIL: gcc.dg/tree-ssa/vrp47.c scan-tree-dump-times vrp2 " & 1;" 0 >> FAIL: gcc.dg/tree-ssa/vrp59.c scan-tree-dump-not vrp1 " & 3;" Its due to the following pattern. Pattern seems to be right. Fold X & (X ^ Y) as X & ~Y The test PASSes when we have the result as ~X & Y in some of the following combinations which is wrong. (bit_and (convert? (bit_xor:c @0 @1) (convert? @0) )) Thanks, Naveen ChangeLog 2015-10-29 Naveen H.S * fold-const.c (fold_binary_loc) : Remove A - B -> A + (-B) if B is easily negatable as its already present. Move x * -C into -x * C if x is easily negatable to match.pd. Move (A + A) * C -> A * 2 * C to match.pd. Move Fold (X ^ Y) & Y as ~X & Y to match.pd. Move Fold (X ^ Y) & X as ~Y & X to match.pd. Move Fold X & (X ^ Y) as X & ~Y to match.pd. Move Fold X & (Y ^ X) as ~Y & X to match.pd. * match.pd (bit_and:c (convert? @0) (convert? (bit_xor:c @0 @1))): New simplifier. (mult:c (convert? negate_expr_p@0) INTEGER_CST@1): New simplifier. (mult:c (convert? (plus @0 @0)) (convert? @1)): New simplifier. (mult:c (convert? (plus @0 @0)) INTEGER_CST@1): New simplifier.= --_002_SN2PR0701MB102448CA48B5A9C045EDBBAE8E200SN2PR0701MB1024_ Content-Type: text/x-patch; name="mult-opt.patch" Content-Description: mult-opt.patch Content-Disposition: attachment; filename="mult-opt.patch"; size=5421; creation-date="Thu, 29 Oct 2015 04:33:24 GMT"; modification-date="Thu, 29 Oct 2015 04:33:24 GMT" Content-Transfer-Encoding: base64 Content-length: 7349 ZGlmZiAtLWdpdCBhL2djYy9mb2xkLWNvbnN0LmMgYi9nY2MvZm9sZC1jb25z dC5jCmluZGV4IGU4ZmYxZGUuLjAzMzRiNTMgMTAwNjQ0Ci0tLSBhL2djYy9m b2xkLWNvbnN0LmMKKysrIGIvZ2NjL2ZvbGQtY29uc3QuYwpAQCAtOTY5NSwx OSArOTY5NSw2IEBAIGZvbGRfYmluYXJ5X2xvYyAobG9jYXRpb25fdCBsb2Ms CiAJICAgIH0KIAl9CiAKLSAgICAgIC8qIEEgLSBCIC0+IEEgKyAoLUIpIGlm IEIgaXMgZWFzaWx5IG5lZ2F0YWJsZS4gICovCi0gICAgICBpZiAobmVnYXRl X2V4cHJfcCAoYXJnMSkKLQkgICYmICFUWVBFX09WRVJGTE9XX1NBTklUSVpF RCAodHlwZSkKLQkgICYmICgoRkxPQVRfVFlQRV9QICh0eXBlKQotICAgICAg ICAgICAgICAgLyogQXZvaWQgdGhpcyB0cmFuc2Zvcm1hdGlvbiBpZiBCIGlz IGEgcG9zaXRpdmUgUkVBTF9DU1QuICAqLwotCSAgICAgICAmJiAoVFJFRV9D T0RFIChhcmcxKSAhPSBSRUFMX0NTVAotCQkgICB8fCAgUkVBTF9WQUxVRV9O RUdBVElWRSAoVFJFRV9SRUFMX0NTVCAoYXJnMSkpKSkKLQkgICAgICB8fCBJ TlRFR1JBTF9UWVBFX1AgKHR5cGUpKSkKLQlyZXR1cm4gZm9sZF9idWlsZDJf bG9jIChsb2MsIFBMVVNfRVhQUiwgdHlwZSwKLQkJCSAgICBmb2xkX2NvbnZl cnRfbG9jIChsb2MsIHR5cGUsIGFyZzApLAotCQkJICAgIGZvbGRfY29udmVy dF9sb2MgKGxvYywgdHlwZSwKLQkJCQkJICAgICAgbmVnYXRlX2V4cHIgKGFy ZzEpKSk7Ci0KICAgICAgIC8qIEZvbGQgJmFbaV0gLSAmYVtqXSB0byBpLWou ICAqLwogICAgICAgaWYgKFRSRUVfQ09ERSAoYXJnMCkgPT0gQUREUl9FWFBS CiAJICAmJiBUUkVFX0NPREUgKFRSRUVfT1BFUkFORCAoYXJnMCwgMCkpID09 IEFSUkFZX1JFRgpAQCAtOTc0OSwyOSArOTczNiw2IEBAIGZvbGRfYmluYXJ5 X2xvYyAobG9jYXRpb25fdCBsb2MsCiAgICAgY2FzZSBNVUxUX0VYUFI6CiAg ICAgICBpZiAoISBGTE9BVF9UWVBFX1AgKHR5cGUpKQogCXsKLQkgIC8qIFRy YW5zZm9ybSB4ICogLUMgaW50byAteCAqIEMgaWYgeCBpcyBlYXNpbHkgbmVn YXRhYmxlLiAgKi8KLQkgIGlmIChUUkVFX0NPREUgKGFyZzEpID09IElOVEVH RVJfQ1NUCi0JICAgICAgJiYgdHJlZV9pbnRfY3N0X3NnbiAoYXJnMSkgPT0g LTEKLQkgICAgICAmJiBuZWdhdGVfZXhwcl9wIChhcmcwKQotCSAgICAgICYm ICh0ZW0gPSBuZWdhdGVfZXhwciAoYXJnMSkpICE9IGFyZzEKLQkgICAgICAm JiAhVFJFRV9PVkVSRkxPVyAodGVtKSkKLQkgICAgcmV0dXJuIGZvbGRfYnVp bGQyX2xvYyAobG9jLCBNVUxUX0VYUFIsIHR5cGUsCi0JICAgIAkJCWZvbGRf Y29udmVydF9sb2MgKGxvYywgdHlwZSwKLQkJCQkJCSAgbmVnYXRlX2V4cHIg KGFyZzApKSwKLQkJCQl0ZW0pOwotCi0JICAvKiAoQSArIEEpICogQyAtPiBB ICogMiAqIEMgICovCi0JICBpZiAoVFJFRV9DT0RFIChhcmcwKSA9PSBQTFVT X0VYUFIKLQkgICAgICAmJiBUUkVFX0NPREUgKGFyZzEpID09IElOVEVHRVJf Q1NUCi0JICAgICAgJiYgb3BlcmFuZF9lcXVhbF9wIChUUkVFX09QRVJBTkQg KGFyZzAsIDApLAotCQkJICAgICAgICAgIFRSRUVfT1BFUkFORCAoYXJnMCwg MSksIDApKQotCSAgICByZXR1cm4gZm9sZF9idWlsZDJfbG9jIChsb2MsIE1V TFRfRVhQUiwgdHlwZSwKLQkJCQlvbWl0X29uZV9vcGVyYW5kX2xvYyAobG9j LCB0eXBlLAotCQkJCQkJICBUUkVFX09QRVJBTkQgKGFyZzAsIDApLAotCQkJ CQkJICBUUkVFX09QRVJBTkQgKGFyZzAsIDEpKSwKLQkJCQlmb2xkX2J1aWxk Ml9sb2MgKGxvYywgTVVMVF9FWFBSLCB0eXBlLAotCQkJCQkgICAgIGJ1aWxk X2ludF9jc3QgKHR5cGUsIDIpICwgYXJnMSkpOwotCiAJICAvKiAoKFQpIChY IC9bZXhdIEMpKSAqIEMgY2FuY2VscyBvdXQgaWYgdGhlIGNvbnZlcnNpb24g aXMKIAkgICAgIHNpZ24tY2hhbmdpbmcgb25seS4gICovCiAJICBpZiAoVFJF RV9DT0RFIChhcmcxKSA9PSBJTlRFR0VSX0NTVApAQCAtOTk2MSw0NSArOTky NSw2IEBAIGZvbGRfYmluYXJ5X2xvYyAobG9jYXRpb25fdCBsb2MsCiAJCQkJ ICBidWlsZF96ZXJvX2NzdCAoVFJFRV9UWVBFICh0ZW0pKSk7CiAJfQogCi0g ICAgICAvKiBGb2xkIChYIF4gWSkgJiBZIGFzIH5YICYgWS4gICovCi0gICAg ICBpZiAoVFJFRV9DT0RFIChhcmcwKSA9PSBCSVRfWE9SX0VYUFIKLQkgICYm IG9wZXJhbmRfZXF1YWxfcCAoVFJFRV9PUEVSQU5EIChhcmcwLCAxKSwgYXJn MSwgMCkpCi0JewotCSAgdGVtID0gZm9sZF9jb252ZXJ0X2xvYyAobG9jLCB0 eXBlLCBUUkVFX09QRVJBTkQgKGFyZzAsIDApKTsKLQkgIHJldHVybiBmb2xk X2J1aWxkMl9sb2MgKGxvYywgQklUX0FORF9FWFBSLCB0eXBlLAotCQkJICAg ICAgZm9sZF9idWlsZDFfbG9jIChsb2MsIEJJVF9OT1RfRVhQUiwgdHlwZSwg dGVtKSwKLQkJCSAgICAgIGZvbGRfY29udmVydF9sb2MgKGxvYywgdHlwZSwg YXJnMSkpOwotCX0KLSAgICAgIC8qIEZvbGQgKFggXiBZKSAmIFggYXMgflkg JiBYLiAgKi8KLSAgICAgIGlmIChUUkVFX0NPREUgKGFyZzApID09IEJJVF9Y T1JfRVhQUgotCSAgJiYgb3BlcmFuZF9lcXVhbF9wIChUUkVFX09QRVJBTkQg KGFyZzAsIDApLCBhcmcxLCAwKQotCSAgJiYgcmVvcmRlcl9vcGVyYW5kc19w IChUUkVFX09QRVJBTkQgKGFyZzAsIDEpLCBhcmcxKSkKLQl7Ci0JICB0ZW0g PSBmb2xkX2NvbnZlcnRfbG9jIChsb2MsIHR5cGUsIFRSRUVfT1BFUkFORCAo YXJnMCwgMSkpOwotCSAgcmV0dXJuIGZvbGRfYnVpbGQyX2xvYyAobG9jLCBC SVRfQU5EX0VYUFIsIHR5cGUsCi0JCQkgICAgICBmb2xkX2J1aWxkMV9sb2Mg KGxvYywgQklUX05PVF9FWFBSLCB0eXBlLCB0ZW0pLAotCQkJICAgICAgZm9s ZF9jb252ZXJ0X2xvYyAobG9jLCB0eXBlLCBhcmcxKSk7Ci0JfQotICAgICAg LyogRm9sZCBYICYgKFggXiBZKSBhcyBYICYgflkuICAqLwotICAgICAgaWYg KFRSRUVfQ09ERSAoYXJnMSkgPT0gQklUX1hPUl9FWFBSCi0JICAmJiBvcGVy YW5kX2VxdWFsX3AgKGFyZzAsIFRSRUVfT1BFUkFORCAoYXJnMSwgMCksIDAp KQotCXsKLQkgIHRlbSA9IGZvbGRfY29udmVydF9sb2MgKGxvYywgdHlwZSwg VFJFRV9PUEVSQU5EIChhcmcxLCAxKSk7Ci0JICByZXR1cm4gZm9sZF9idWls ZDJfbG9jIChsb2MsIEJJVF9BTkRfRVhQUiwgdHlwZSwKLQkJCSAgICAgIGZv bGRfY29udmVydF9sb2MgKGxvYywgdHlwZSwgYXJnMCksCi0JCQkgICAgICBm b2xkX2J1aWxkMV9sb2MgKGxvYywgQklUX05PVF9FWFBSLCB0eXBlLCB0ZW0p KTsKLQl9Ci0gICAgICAvKiBGb2xkIFggJiAoWSBeIFgpIGFzIH5ZICYgWC4g ICovCi0gICAgICBpZiAoVFJFRV9DT0RFIChhcmcxKSA9PSBCSVRfWE9SX0VY UFIKLQkgICYmIG9wZXJhbmRfZXF1YWxfcCAoYXJnMCwgVFJFRV9PUEVSQU5E IChhcmcxLCAxKSwgMCkKLQkgICYmIHJlb3JkZXJfb3BlcmFuZHNfcCAoYXJn MCwgVFJFRV9PUEVSQU5EIChhcmcxLCAwKSkpCi0JewotCSAgdGVtID0gZm9s ZF9jb252ZXJ0X2xvYyAobG9jLCB0eXBlLCBUUkVFX09QRVJBTkQgKGFyZzEs IDApKTsKLQkgIHJldHVybiBmb2xkX2J1aWxkMl9sb2MgKGxvYywgQklUX0FO RF9FWFBSLCB0eXBlLAotCQkJICAgICAgZm9sZF9idWlsZDFfbG9jIChsb2Ms IEJJVF9OT1RfRVhQUiwgdHlwZSwgdGVtKSwKLQkJCSAgICAgIGZvbGRfY29u dmVydF9sb2MgKGxvYywgdHlwZSwgYXJnMCkpOwotCX0KLQogICAgICAgLyog Rm9sZCAoWCAqIFkpICYgLSgxIDw8IENTVCkgdG8gWCAqIFkgaWYgWSBpcyBh IGNvbnN0YW50CiAgICAgICAgICBtdWx0aXBsZSBvZiAxIDw8IENTVC4gICov CiAgICAgICBpZiAoVFJFRV9DT0RFIChhcmcxKSA9PSBJTlRFR0VSX0NTVCkK ZGlmZiAtLWdpdCBhL2djYy9tYXRjaC5wZCBiL2djYy9tYXRjaC5wZAppbmRl eCAxZDZkZGUxLi42NzkzZjU5IDEwMDY0NAotLS0gYS9nY2MvbWF0Y2gucGQK KysrIGIvZ2NjL21hdGNoLnBkCkBAIC00OTAsNiArNDkwLDEyIEBAIERFRklO RV9JTlRfQU5EX0ZMT0FUX1JPVU5EX0ZOIChSSU5UKQogIChpZiAod2k6OmJp dF9ub3QgKEAyKSA9PSBAMSkKICAgKGJpdF94b3IgQDAgQDEpKSkKIAorLyog Rm9sZCBYICYgKFggXiBZKSBhcyBYICYgflkuICAqLworKHNpbXBsaWZ5Cisg KGJpdF9hbmQ6YyAoY29udmVydD8gQDApIChjb252ZXJ0PyAoYml0X3hvcjpj IEAwIEAxKSkpCisgIChpZiAodHJlZV9ub3BfY29udmVyc2lvbl9wICh0eXBl LCBUUkVFX1RZUEUgKEAwKSkpCisgICAoY29udmVydCAoYml0X2FuZCBAMCAo Yml0X25vdCBAMSkpKSkpCisKIC8qIFggJSBZIGlzIHNtYWxsZXIgdGhhbiBZ LiAgKi8KIChmb3IgY21wIChsdCBnZSkKICAoc2ltcGxpZnkKQEAgLTE2MDAs MTIgKzE2MDYsMzEgQEAgREVGSU5FX0lOVF9BTkRfRkxPQVRfUk9VTkRfRk4g KFJJTlQpCiAgICAoaWYgKCFUUkVFX09WRVJGTE9XICh0ZW0pIHx8ICFmbGFn X3RyYXBwaW5nX21hdGgpCiAgICAgKG1pbnVzIEAwIHsgdGVtOyB9KSkpKSkK IAorLyogQ29udmVydCBYICogLUMgaW50byAtWCAqIEMuICAqLworKHNpbXBs aWZ5CisgKG11bHQ6YyAoY29udmVydD8gbmVnYXRlX2V4cHJfcEAwKSBJTlRF R0VSX0NTVEAxKQorICAoaWYgKHRyZWVfaW50X2NzdF9zZ24gKEAxKSA9PSAt MSkKKyAgICh3aXRoIHsgdHJlZSB0ZW0gPSBjb25zdF91bm9wIChORUdBVEVf RVhQUiwgdHlwZSwgQDEpOyB9CisgICAgKGlmICghVFJFRV9PVkVSRkxPVyAo dGVtKSAmJiB3aTo6bmVfcCAodGVtLCBAMSkKKwkgICYmIHRyZWVfbm9wX2Nv bnZlcnNpb25fcCAodHlwZSwgVFJFRV9UWVBFIChAMCkpKQorICAgICAobXVs dCAoY29udmVydCAobmVnYXRlIEAwKSkgQDEpKSkpKQorCiAvKiBDb252ZXJ0 IHgreCBpbnRvIHgqMi4wLiAgKi8KIChzaW1wbGlmeQogIChwbHVzIEAwIEAw KQogIChpZiAoU0NBTEFSX0ZMT0FUX1RZUEVfUCAodHlwZSkpCiAgIChtdWx0 IEAwIHsgYnVpbGRfcmVhbCAodHlwZSwgZGNvbnN0Mik7IH0pKSkKIAorLyog Q29udmVydCAoQSArIEEpICogQyAtPiBBICogMiAqIEMuICAqLworKHNpbXBs aWZ5CisgKG11bHQ6YyAoY29udmVydD8gKHBsdXMgQDAgQDApKSAoY29udmVy dD8gQDEpKQorICAoaWYgKHRyZWVfbm9wX2NvbnZlcnNpb25fcCAoVFJFRV9U WVBFIChAMCksIHR5cGUpKQorICAgKGNvbnZlcnQgKG11bHQgQDAgKG11bHQg eyBidWlsZF9pbnRfY3N0IChUUkVFX1RZUEUgKEAxKSwgMik7IH0gQDEpKSkp KQorKHNpbXBsaWZ5CisgKG11bHQ6YyAoY29udmVydD8gKHBsdXMgQDAgQDAp KSBJTlRFR0VSX0NTVEAxKQorICAoaWYgKHRyZWVfbm9wX2NvbnZlcnNpb25f cCAoVFJFRV9UWVBFIChAMCksIHR5cGUpKQorICAgKGNvbnZlcnQgKG11bHQg QDAgKG11bHQgeyBidWlsZF9pbnRfY3N0IChUUkVFX1RZUEUgKEAxKSwgMik7 IH0gQDEpKSkpKQorCiAoc2ltcGxpZnkKICAobWludXMgaW50ZWdlcl96ZXJv cCBAMSkKICAobmVnYXRlIEAxKSkK --_002_SN2PR0701MB102448CA48B5A9C045EDBBAE8E200SN2PR0701MB1024_--