From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pl1-x636.google.com (mail-pl1-x636.google.com [IPv6:2607:f8b0:4864:20::636]) by sourceware.org (Postfix) with ESMTPS id 8F4653858402 for ; Tue, 29 Aug 2023 23:02:30 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 8F4653858402 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=ventanamicro.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=ventanamicro.com Received: by mail-pl1-x636.google.com with SMTP id d9443c01a7336-1bc8a2f71eeso31285705ad.0 for ; Tue, 29 Aug 2023 16:02:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ventanamicro.com; s=google; t=1693350149; x=1693954949; darn=gcc.gnu.org; h=to:subject:from:content-language:user-agent:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to; bh=o78+yrT0Akm7M43HDhX8oPLJn47mNY5HN3LA4/bns9A=; b=ad4/Tpd6ui8LrD9YUvVv+uCgtlFdA4cOfezWYYTjvKbLSWPAPFFi7T24bCwfLaa2wz e5uL4yy5Ig92y69RBjc3QK5uhQIHBlh2b5tbPcskrusVOPyWuxXFuKEy2FmfDTWI6fUI FzWPHYtwNV6dvdDaPC/q2+1H92XUrf3LMsE30W2n0iYcnEBniUUm82DzgTVfVqpZAo3L ny/bHF/tPKqcfYL9oaXvHFHYKfjj+0Ebd8TFDKwrcm3d6kKtvr2HTYO6DFwXe4cdja0x d9XIXfulPlyuHALJgC67164GcLweBCDB1cMRaztodTG+kWCi4m2xJHafxAqMuzefPzle b1Rw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1693350149; x=1693954949; h=to:subject:from:content-language:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=o78+yrT0Akm7M43HDhX8oPLJn47mNY5HN3LA4/bns9A=; b=YeWrQeqNS5KlVf5kAmV7IFh9I+vPD4yjfJV2NhITwWTK+uAMDCj3SyunnhmM5EGSwm NUwbN+GLLFeboViBX0rEwOSgw5VZ0aR+XGctk2SR4x+HS5un8CnrQr1Okx2R7x0LwX76 Rls1PfYtYDTuC40L9AUHV80TcHSPSN5U5RA0RqIM40JgkBFLRgMF2LnnOC+TaiKsKcwE tJ5wE4APeNqrGnLDOxVokgwHV/XGwIFtfNSPwO1jQOlWxQhHMJcgrv4yFDmhfadRStTN UNglevvAw9ITB6S5phA9W+Mi77SUdxB6tctq61+x1+x3BYrlV3sAGdA3GlTWCqYpzyG+ ADdQ== X-Gm-Message-State: AOJu0Yx0NGVBTCZ2w0Ql4S+a2UaFh3QoY4fFEMEk9u08ZWl8vPFmDX5M N/LPkpTRVF4lco3r0Uq0YMZMxeaVuNpY04eaOHvSMA== X-Google-Smtp-Source: AGHT+IGEYbFvLlAFcQFODOOwfTYqALw4bArGUyQpM5F+TMuOPeI60P8aadeXWYvSNCHGDbE532nB+Q== X-Received: by 2002:a17:902:bd45:b0:1bc:2c79:c6b6 with SMTP id b5-20020a170902bd4500b001bc2c79c6b6mr405583plx.28.1693350148986; Tue, 29 Aug 2023 16:02:28 -0700 (PDT) Received: from [172.31.0.109] ([136.36.130.248]) by smtp.gmail.com with ESMTPSA id f15-20020a170902ff0f00b001b801044466sm9802519plj.114.2023.08.29.16.02.27 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 29 Aug 2023 16:02:28 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------fVtV1owSQUpth6EXSnF3E0WI" Message-ID: Date: Tue, 29 Aug 2023 17:02:27 -0600 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 Content-Language: en-US From: Jeff Law Subject: [committed] RISC-V: Use splitter to generate zicond in another case To: "gcc-patches@gcc.gnu.org" X-Spam-Status: No, score=-10.2 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,KAM_SHORT,LIKELY_SPAM_BODY,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This is a multi-part message in MIME format. --------------fVtV1owSQUpth6EXSnF3E0WI Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit So in analyzing Ventana's internal tree against the trunk it became apparent that the current zicond code is missing a case that helps coremark's bitwise CRC implementation. Here's a minimized testcase: long xor1(long crc, long poly) { if (crc & 1) crc ^= poly; return crc; } ie, it's just a conditional xor. We generate this: andi a5,a0,1 neg a5,a5 and a5,a5,a1 xor a0,a5,a0 ret But we should instead generate: andi a5,a0,1 czero.eqz a5,a1,a5 xor a0,a5,a0 ret Combine wants to generate: Trying 7, 8 -> 9: 7: r140:DI=r137:DI&0x1 8: r141:DI=-r140:DI REG_DEAD r140:DI 9: r142:DI=r141:DI&r144:DI REG_DEAD r144:DI REG_DEAD r141:DI Failed to match this instruction: (set (reg:DI 142) (and:DI (sign_extract:DI (reg/v:DI 137 [ crc ]) (const_int 1 [0x1]) (const_int 0 [0])) (reg:DI 144))) A splitter can rewrite the above into a suitable if-then-else construct and squeeze an instruction out of that pesky CRC loop. Sadly it doesn't really help anything else. The patch includes two variants. One that uses ZBS, the other uses an ANDI logical to produce the input condition. This was primarily Philipp's work under contract with Ventana. I just rewrite the split bits in an if-then-else form and adjusted the testsuite for zicond instead of xventanacondops. Pushed to the trunk, Jeff --------------fVtV1owSQUpth6EXSnF3E0WI Content-Type: text/plain; charset=UTF-8; name="P" Content-Disposition: attachment; filename="P" Content-Transfer-Encoding: base64 Y29tbWl0IDk0Yjk1MGRmNmY4YzQ2OTI1Nzk5ZjY0MmU1YzQ0ZjQyNjM4ZjJiNWUKQXV0aG9y OiBQaGlsaXBwIFRvbXNpY2ggPHBoaWxpcHAudG9tc2ljaEB2cnVsbC5ldT4KRGF0ZTogICBU dWUgQXVnIDI5IDE2OjQ4OjI0IDIwMjMgLTA2MDAKCiAgICBSSVNDLVY6IFVzZSBzcGxpdHRl ciB0byBnZW5lcmF0ZSB6aWNvbmQgaW4gYW5vdGhlciBjYXNlCiAgICAKICAgIFNvIGluIGFu YWx5emluZyBWZW50YW5hJ3MgaW50ZXJuYWwgdHJlZSBhZ2FpbnN0IHRoZSB0cnVuayBpdCBi ZWNhbWUgYXBwYXJlbnQKICAgIHRoYXQgdGhlIGN1cnJlbnQgemljb25kIGNvZGUgaXMgbWlz c2luZyBhIGNhc2UgdGhhdCBoZWxwcyBjb3JlbWFyaydzIGJpdHdpc2UKICAgIENSQyBpbXBs ZW1lbnRhdGlvbi4KICAgIAogICAgSGVyZSdzIGEgbWluaW1pemVkIHRlc3RjYXNlOgogICAg CiAgICBsb25nIHhvcjEobG9uZyBjcmMsIGxvbmcgcG9seSkKICAgIHsKICAgICAgaWYgKGNy YyAmIDEpCiAgICAgICAgY3JjIF49IHBvbHk7CiAgICAKICAgICAgcmV0dXJuIGNyYzsKICAg IH0KICAgIAogICAgaWUsIGl0J3MganVzdCBhIGNvbmRpdGlvbmFsIHhvci4KICAgIAogICAg V2UgZ2VuZXJhdGUgdGhpczoKICAgIAogICAgICAgICAgICBhbmRpICAgIGE1LGEwLDEKICAg ICAgICAgICAgbmVnICAgICBhNSxhNQogICAgICAgICAgICBhbmQgICAgIGE1LGE1LGExCiAg ICAgICAgICAgIHhvciAgICAgYTAsYTUsYTAKICAgICAgICAgICAgcmV0CiAgICAKICAgIEJ1 dCB3ZSBzaG91bGQgaW5zdGVhZCBnZW5lcmF0ZToKICAgIAogICAgICAgICAgICBhbmRpICAg IGE1LGEwLDEKICAgICAgICAgICAgY3plcm8uZXF6ICAgICAgIGE1LGExLGE1CiAgICAgICAg ICAgIHhvciAgICAgYTAsYTUsYTAKICAgICAgICAgICAgcmV0CiAgICAKICAgIENvbWJpbmUg d2FudHMgdG8gZ2VuZXJhdGU6CiAgICAKICAgIFRyeWluZyA3LCA4IC0+IDk6CiAgICAgICAg NzogcjE0MDpEST1yMTM3OkRJJjB4MQogICAgICAgIDg6IHIxNDE6REk9LXIxNDA6REkKICAg ICAgICAgIFJFR19ERUFEIHIxNDA6REkKICAgICAgICA5OiByMTQyOkRJPXIxNDE6REkmcjE0 NDpESQogICAgICAgICAgUkVHX0RFQUQgcjE0NDpESQogICAgICAgICAgUkVHX0RFQUQgcjE0 MTpESQogICAgRmFpbGVkIHRvIG1hdGNoIHRoaXMgaW5zdHJ1Y3Rpb246CiAgICAoc2V0IChy ZWc6REkgMTQyKQogICAgICAgIChhbmQ6REkgKHNpZ25fZXh0cmFjdDpESSAocmVnL3Y6REkg MTM3IFsgY3JjIF0pCiAgICAgICAgICAgICAgICAoY29uc3RfaW50IDEgWzB4MV0pCiAgICAg ICAgICAgICAgICAoY29uc3RfaW50IDAgWzBdKSkKICAgICAgICAgICAgKHJlZzpESSAxNDQp KSkKICAgIAogICAgQSBzcGxpdHRlciBjYW4gcmV3cml0ZSB0aGUgYWJvdmUgaW50byBhIHN1 aXRhYmxlIGlmLXRoZW4tZWxzZSBjb25zdHJ1Y3QgYW5kCiAgICBzcXVlZXplIGFuIGluc3Ry dWN0aW9uIG91dCBvZiB0aGF0IHBlc2t5IENSQyBsb29wLiAgU2FkbHkgaXQgZG9lc24ndCBy ZWFsbHkKICAgIGhlbHAgYW55dGhpbmcgZWxzZS4KICAgIAogICAgVGhlIHBhdGNoIGluY2x1 ZGVzIHR3byB2YXJpYW50cy4gIE9uZSB0aGF0IHVzZXMgWkJTLCB0aGUgb3RoZXIgdXNlcyBh biBBTkRJCiAgICBsb2dpY2FsIHRvIHByb2R1Y2UgdGhlIGlucHV0IGNvbmRpdGlvbi4KICAg IAogICAgZ2NjLwogICAgICAgICAgICAqIGNvbmZpZy9yaXNjdi96aWNvbmQubWQ6IE5ldyBz cGxpdHRlcnMgdG8gcmV3cml0ZSBzaW5nbGUgYml0CiAgICAgICAgICAgIHNpZ24gZXh0ZW5z aW9uIGFzIHRoZSBjb25kaXRpb24gdG8gYSBjemVybyBpbiB0aGUgZGVzaXJlZCBmb3JtLgog ICAgCiAgICBnY2MvdGVzdHN1aXRlCiAgICAgICAgICAgICogZ2NjLnRhcmdldC9yaXNjdi96 aWNvbmQteG9yLTAxLmM6IE5ldyB0ZXN0LgogICAgCiAgICAgICAgICAgIENvLWF1dGhvcmVk LWJ5OiBKZWZmIExhdyA8amxhd0B2ZW50YW5hbWljcm8uY29tPgoKZGlmZiAtLWdpdCBhL2dj Yy9jb25maWcvcmlzY3Yvemljb25kLm1kIGIvZ2NjL2NvbmZpZy9yaXNjdi96aWNvbmQubWQK aW5kZXggMjVmMjFkMzM0ODcuLjQ2MTkyMjBlZjhhIDEwMDY0NAotLS0gYS9nY2MvY29uZmln L3Jpc2N2L3ppY29uZC5tZAorKysgYi9nY2MvY29uZmlnL3Jpc2N2L3ppY29uZC5tZApAQCAt NjIsMyArNjIsMzQgQEAgKGRlZmluZV9pbnNuICIqY3plcm8ubmV6LjxHUFI6bW9kZT48WDpt b2RlPi5vcHQyIgogICAiVEFSR0VUX1pJQ09ORCAmJiBydHhfZXF1YWxfcCAob3BlcmFuZHNb MV0sIG9wZXJhbmRzWzNdKSIKICAgImN6ZXJvLm5lelx0JTAsJTIsJTEiCiApCisKKzs7IENv bWJpbmUgY3JlYXRlcyB0aGlzIGZvcm0gaW4gc29tZSBjYXNlcyAocGFydGljdWxhcmx5IHRo ZSBjb3JlbWFyaworOzsgQ1JDIGxvb3AuCisoZGVmaW5lX3NwbGl0CisgIFsoc2V0IChtYXRj aF9vcGVyYW5kOlggMCAicmVnaXN0ZXJfb3BlcmFuZCIpCisJKGFuZDpYIChzaWduX2V4dHJh Y3Q6WCAobWF0Y2hfb3BlcmFuZDpYIDEgInJlZ2lzdGVyX29wZXJhbmQiKQorCQkJICAgICAg IChjb25zdF9pbnQgMSkKKwkJCSAgICAgICAobWF0Y2hfb3BlcmFuZCAyICJpbW1lZGlhdGVf b3BlcmFuZCIpKQorCSAgICAgICAobWF0Y2hfb3BlcmFuZDpYIDMgInJlZ2lzdGVyX29wZXJh bmQiKSkpCisgICAoY2xvYmJlciAobWF0Y2hfb3BlcmFuZDpYIDQgInJlZ2lzdGVyX29wZXJh bmQiKSldCisgICJUQVJHRVRfWklDT05EICYmIFRBUkdFVF9aQlMiCisgIFsoc2V0IChtYXRj aF9kdXAgNCkgKHplcm9fZXh0cmFjdDpYIChtYXRjaF9kdXAgMSkgKGNvbnN0X2ludCAxKSAo bWF0Y2hfZHVwIDIpKSkKKyAgIChzZXQgKG1hdGNoX2R1cCAwKSAoaWZfdGhlbl9lbHNlOlgg KGVxOlggKG1hdGNoX2R1cCA0KSAoY29uc3RfaW50IDApKQorCQkJCSAgICAgIChjb25zdF9p bnQgMCkKKwkJCQkgICAgICAobWF0Y2hfZHVwIDMpKSldKQorCisoZGVmaW5lX3NwbGl0Cisg IFsoc2V0IChtYXRjaF9vcGVyYW5kOlggMCAicmVnaXN0ZXJfb3BlcmFuZCIpCisJKGFuZDpY IChzaWduX2V4dHJhY3Q6WCAobWF0Y2hfb3BlcmFuZDpYIDEgInJlZ2lzdGVyX29wZXJhbmQi KQorCQkJICAgICAgIChjb25zdF9pbnQgMSkKKwkJCSAgICAgICAobWF0Y2hfb3BlcmFuZCAy ICJpbW1lZGlhdGVfb3BlcmFuZCIpKQorCSAgICAgICAobWF0Y2hfb3BlcmFuZDpYIDMgInJl Z2lzdGVyX29wZXJhbmQiKSkpCisgICAoY2xvYmJlciAobWF0Y2hfb3BlcmFuZDpYIDQgInJl Z2lzdGVyX29wZXJhbmQiKSldCisgICJUQVJHRVRfWklDT05EICYmICFUQVJHRVRfWkJTICYm IChVSU5UVkFMIChvcGVyYW5kc1syXSkgPCAxMSkiCisgIFsoc2V0IChtYXRjaF9kdXAgNCkg KGFuZDpYIChtYXRjaF9kdXAgMSkgKG1hdGNoX2R1cCAyKSkpCisgICAoc2V0IChtYXRjaF9k dXAgMCkgKGlmX3RoZW5fZWxzZTpYIChlcTpYIChtYXRjaF9kdXAgNCkgKGNvbnN0X2ludCAw KSkKKwkJCQkgICAgICAoY29uc3RfaW50IDApCisJCQkJICAgICAgKG1hdGNoX2R1cCAzKSkp XQoreworICBvcGVyYW5kc1syXSA9IEdFTl9JTlQgKDEgPDwgVUlOVFZBTChvcGVyYW5kc1sy XSkpOworfSkKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi96 aWNvbmQteG9yLTAxLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3Yvemljb25k LXhvci0wMS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi44MzYy ZmZhZjVhYgotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9y aXNjdi96aWNvbmQteG9yLTAxLmMKQEAgLTAsMCArMSwxNCBAQAorLyogeyBkZy1kbyBjb21w aWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLW1hcmNoPXJ2NjRnY196aWNvbmQgLW1hYmk9 bHA2NCIgfSAqLworLyogeyBkZy1za2lwLWlmICIiIHsgKi0qLSogfSB7ICItTzAiICItT2ci ICItT3MiICItT3oiIH0gfSAqLworCitsb25nIHhvcjEobG9uZyBjcmMsIGxvbmcgcG9seSkK K3sKKyAgaWYgKGNyYyAmIDEpCisgICAgY3JjIF49IHBvbHk7CisKKyAgcmV0dXJuIGNyYzsK K30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJjemVyby5lcXpc dCIgMSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAieG9y XHQiIDEgfSB9ICovCg== --------------fVtV1owSQUpth6EXSnF3E0WI--