From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pg1-x536.google.com (mail-pg1-x536.google.com [IPv6:2607:f8b0:4864:20::536]) by sourceware.org (Postfix) with ESMTPS id 3BF793858D37 for ; Tue, 23 May 2023 19:47:17 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 3BF793858D37 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-pg1-x536.google.com with SMTP id 41be03b00d2f7-53202149ae2so2102a12.3 for ; Tue, 23 May 2023 12:47:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1684871236; x=1687463236; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=Q2FyH7CLQ0r5CWvqsID9lEY0VKuRESLI+rXUB9wwwIM=; b=Mky3bDQgmVxBnaG4IKDQG8jCWs1itS9T27dlOGMNloOp9yaaAidSuSBATcug/rCm6e A6dDy300ycrQm/TsA8a27YSThxgnUMcyl+l3awkZJzRV1F9KwqTUdmoyGVHN0SBeVaD3 tATXBjk65tTdPj8kGSVfHfviT1xED6+hUZCO1f8iXgdwZuC3wjKFJqhxxn2OUkgP8p8d 87MLm9XHukhwidsdNq6CQFxrWQ+51bldCQs1wzF0m7lHyTFlV/NwDtluWhFAKJkUaSSx tN0jGQgu+RF/8h1X4XTfOC8+s9509ZTdM38BXU2XA+51ph978a33GTv65z+zbxR4qi8f cRrg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1684871236; x=1687463236; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=Q2FyH7CLQ0r5CWvqsID9lEY0VKuRESLI+rXUB9wwwIM=; b=VObD3r9dO8zptTq15dwnjZIozMbGNpdjbH38BjXQ3tCGQ2v4trBSD5UBbRTyjFvwjl Ge3qwqnJ6+fDOK+RxjWLZuWaA3RlBS8j8qzznRcYtMzHOuKBupvDLPHfaSA+80o0mBcR BTwdriyjmrMO/p2Jfd2ihRBE0fcMa63xP9KEi1+MO0z4bmLofYuHnt3iQYe3shxt1flb yPeEMBX0gGFCssUqhytP5zjcirmQ/4STCd2AnNa+nXytgklPspsSauevhiTatt66Tgcc 50gv8am6+t8zMSlAM1QFnj9x+LYWsBclBiiu+X9nEliQgkcexkh8B/W7HRr9VbL/VJ2Z /n1Q== X-Gm-Message-State: AC+VfDxCkrGl8qSuuNwy5xxRN3C4Q+qVQf6R4BTCU5Uuwzqg1CMvW0kE njXhVUpcQntkLPLVqt0DElv1hdy0g9gudbTosfFD/OAfofY= X-Google-Smtp-Source: ACHHUZ7fxj9XkRkfMeDhORJYUL+5xLRe1n2ljJaIV7hL3Hyy4JbsLBeAj2L5g4KzQqLb2Dcs5Ox6eT/9Mi+Sn+wPhYI= X-Received: by 2002:a17:90a:420b:b0:24c:5e6:7035 with SMTP id o11-20020a17090a420b00b0024c05e67035mr13991878pjg.30.1684871235682; Tue, 23 May 2023 12:47:15 -0700 (PDT) MIME-Version: 1.0 From: Jivan Hakobyan Date: Tue, 23 May 2023 23:46:59 +0400 Message-ID: Subject: RISC-V: Use extension instructions instead of bitwise "and" To: gcc-patches@gcc.gnu.org Content-Type: multipart/mixed; boundary="0000000000007edb9a05fc61a75b" X-Spam-Status: No, score=-8.5 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,GIT_PATCH_0,HTML_MESSAGE,KAM_SHORT,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE 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: --0000000000007edb9a05fc61a75b Content-Type: multipart/alternative; boundary="0000000000007edb9705fc61a759" --0000000000007edb9705fc61a759 Content-Type: text/plain; charset="UTF-8" In the case where the target supports extension instructions, it is preferable to use that instead of doing the same in other ways. For the following case void foo (unsigned long a, unsigned long* ptr) { ptr[0] = a & 0xffffffffUL; ptr[1] &= 0xffffffffUL; } GCC generates foo: li a5,-1 srli a5,a5,32 and a0,a0,a5 sd a0,0(a1) ld a4,8(a1) and a5,a4,a5 sd a5,8(a1) ret but it will be profitable to generate this one foo: zext.w a0,a0 sd a0,0(a1) lwu a5,8(a1) sd a5,8(a1) ret This patch fixes mentioned issue. It supports HI -> DI, HI->SI and SI -> DI extensions. gcc/ChangeLog: * config/riscv/riscv.md (and3): New expander. (*and3) New pattern. * config/riscv/predicates.md (arith_operand_or_mode_mask): New predicate. gcc/testsuite/ChangeLog: * gcc.target/riscv/and-extend-1.c: New test * gcc.target/riscv/and-extend-2.c: New test -- With the best regards Jivan Hakobyan --0000000000007edb9705fc61a759-- --0000000000007edb9a05fc61a75b Content-Type: text/x-patch; charset="US-ASCII"; name="and_extend.patch" Content-Disposition: attachment; filename="and_extend.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_li0omr260 ZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcmlzY3YvcHJlZGljYXRlcy5tZCBi L2djYy9jb25maWcvcmlzY3YvcHJlZGljYXRlcy5tZAppbmRleCBmZmNiYjlh NzU4OS4uNzBmNTcwMTUzYWUgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvcmlz Y3YvcHJlZGljYXRlcy5tZAorKysgYi9nY2MvY29uZmlnL3Jpc2N2L3ByZWRp Y2F0ZXMubWQKQEAgLTI3LDYgKzI3LDEyIEBACiAgIChpb3IgKG1hdGNoX29w ZXJhbmQgMCAiY29uc3RfYXJpdGhfb3BlcmFuZCIpCiAgICAgICAgKG1hdGNo X29wZXJhbmQgMCAicmVnaXN0ZXJfb3BlcmFuZCIpKSkKIAorKGRlZmluZV9w cmVkaWNhdGUgImFyaXRoX29wZXJhbmRfb3JfbW9kZV9tYXNrIgorICAoaW9y IChtYXRjaF9vcGVyYW5kIDAgImFyaXRoX29wZXJhbmQiKQorICAgICAgIChh bmQgKG1hdGNoX2NvZGUgImNvbnN0X2ludCIpCisgICAgICAgICAgICAobWF0 Y2hfdGVzdCAiSU5UVkFMIChvcCkgPT0gR0VUX01PREVfTUFTSyAoSEltb2Rl KQorICAgICAgICAgICAgICAgICAgICAgICAgIHx8IElOVFZBTCAob3ApID09 IEdFVF9NT0RFX01BU0sgKFNJbW9kZSkiKSkpKQorCiAoZGVmaW5lX3ByZWRp Y2F0ZSAibHVpX29wZXJhbmQiCiAgIChhbmQgKG1hdGNoX2NvZGUgImNvbnN0 X2ludCIpCiAgICAgICAgKG1hdGNoX3Rlc3QgIkxVSV9PUEVSQU5EIChJTlRW QUwgKG9wKSkiKSkpCmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3Jpc2N2L3Jp c2N2Lm1kIGIvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi5tZAppbmRleCAxMjRk OGM5NTgwNC4uMzMzMzY0OTI4MTIgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcv cmlzY3YvcmlzY3YubWQKKysrIGIvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi5t ZApAQCAtMTM0Miw5ICsxMzQyLDQ2IEBACiA7OyBGb3IgUlY2NCwgd2UgZG9u J3QgZXhwb3NlIHRoZSBTSW1vZGUgb3BlcmF0aW9ucyB0byB0aGUgcnRsIGV4 cGFuZGVycywKIDs7IGJ1dCBTSW1vZGUgdmVyc2lvbnMgZXhpc3QgZm9yIGNv bWJpbmUuCiAKKyhkZWZpbmVfZXhwYW5kICJhbmQ8bW9kZT4zIgorICBbKHNl dCAobWF0Y2hfb3BlcmFuZDpYICAgICAgICAgICAgICAgIDAgInJlZ2lzdGVy X29wZXJhbmQiKQorICAgICAgICAoYW5kOlggKG1hdGNoX29wZXJhbmQ6WCAx ICJyZWdpc3Rlcl9vcGVyYW5kIikKKyAgICAgICAgICAgICAgICAgICAgICAg KG1hdGNoX29wZXJhbmQ6WCAyICJhcml0aF9vcGVyYW5kX29yX21vZGVfbWFz ayIpKSldCisgICIiCit7CisgIGlmIChDT05TVF9JTlRfUCAob3BlcmFuZHNb Ml0pKQorICB7CisgICAgZW51bSBtYWNoaW5lX21vZGUgdG1vZGUgPSBWT0lE bW9kZTsKKyAgICBpZiAoSU5UVkFMIChvcGVyYW5kc1syXSkgPT0gR0VUX01P REVfTUFTSyAoSEltb2RlKSkKKyAgICAgIHRtb2RlID0gSEltb2RlOworICAg IGVsc2UgaWYgKElOVFZBTCAob3BlcmFuZHNbMl0pID09IEdFVF9NT0RFX01B U0sgKFNJbW9kZSkpCisgICAgICB0bW9kZSA9IFNJbW9kZTsKKworICAgIGlm ICh0bW9kZSAhPSBWT0lEbW9kZSkKKyAgICB7CisgICAgICBydHggdG1wID0g Z2VuX2xvd3BhcnQgKHRtb2RlLCBvcGVyYW5kc1sxXSk7CisgICAgICBlbWl0 X2luc24gKGdlbl9leHRlbmRfaW5zbiAob3BlcmFuZHNbMF0sIHRtcCwgPE1P REU+bW9kZSwgdG1vZGUsIDEpKTsKKyAgICAgIERPTkU7CisgICAgfQorICB9 CisgIGVsc2UKKyAgeworICAgIGVtaXRfbW92ZV9pbnNuIChvcGVyYW5kc1sw XSwgZ2VuX3J0eF9BTkQgKDxNT0RFPm1vZGUsIG9wZXJhbmRzWzFdLCBvcGVy YW5kc1syXSkpOworICAgIERPTkU7CisgIH0KK30pCisKKyhkZWZpbmVfaW5z biAiKmFuZDxtb2RlPjMiCisgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlggICAg ICAgICAgICAgICAgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj1yLHIiKQorCShh bmQ6WCAobWF0Y2hfb3BlcmFuZDpYIDEgInJlZ2lzdGVyX29wZXJhbmQiICIl cixyIikKKwkJICAgICAgIChtYXRjaF9vcGVyYW5kOlggMiAiYXJpdGhfb3Bl cmFuZCIgICAgIiByLEkiKSkpXQorICAiIgorICAiYW5kJWkyXHQlMCwlMSwl MiIKKyAgWyhzZXRfYXR0ciAidHlwZSIgImxvZ2ljYWwiKQorICAgKHNldF9h dHRyICJtb2RlIiAiPE1PREU+IildKQorCiAoZGVmaW5lX2luc24gIjxvcHRh Yj48bW9kZT4zIgogICBbKHNldCAobWF0Y2hfb3BlcmFuZDpYICAgICAgICAg ICAgICAgIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9cixyIikKLQkoYW55X2Jp dHdpc2U6WCAobWF0Y2hfb3BlcmFuZDpYIDEgInJlZ2lzdGVyX29wZXJhbmQi ICIlcixyIikKKwkoYW55X29yOlggKG1hdGNoX29wZXJhbmQ6WCAxICJyZWdp c3Rlcl9vcGVyYW5kIiAiJXIsciIpCiAJCSAgICAgICAobWF0Y2hfb3BlcmFu ZDpYIDIgImFyaXRoX29wZXJhbmQiICAgICIgcixJIikpKV0KICAgIiIKICAg IjxpbnNuPiVpMlx0JTAsJTEsJTIiCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvcmlzY3YvYW5kLWV4dGVuZC0xLmMgYi9nY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvcmlzY3YvYW5kLWV4dGVuZC0xLmMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmEyNzBkMjg3Mzc0 Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0 L3Jpc2N2L2FuZC1leHRlbmQtMS5jCkBAIC0wLDAgKzEsMzAgQEAKKy8qIHsg ZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1tYXJjaD1y djY0Z2NfemJhX3piYiAtbWFiaT1scDY0IiB9ICovCisvKiB7IGRnLXNraXAt aWYgIiIgeyAqLSotKiB9IHsgIi1PMCIgfSB9ICovCisKK3ZvaWQKK2Zvbyh1 bnNpZ25lZCBsb25nIGEsIHVuc2lnbmVkIGxvbmcqIHB0cikKK3sKKyAgICBw dHJbMF0gPSBhICYgMHhmZmZmZmZmZlVMOworICAgIHB0clsxXSAmPSAweGZm ZmZmZmZmVUw7Cit9CisKK3ZvaWQKK2ZvbzIodW5zaWduZWQgbG9uZyBhLCB1 bnNpZ25lZCBsb25nKiBwdHIpCit7CisgICAgcHRyWzBdID0gYSAmIDB4ZmZm ZjsKKyAgICBwdHJbMV0gJj0gMHhmZmZmOworfQorCit2b2lkCitmb28zKHVu c2lnbmVkIGludCBhLCB1bnNpZ25lZCBpbnQqIHB0cikKK3sKKyAgICBwdHJb MF0gPSBhICYgMHhmZmZmOworICAgIHB0clsxXSAmPSAweGZmZmY7Cit9CisK Ky8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiemV4dC53 IiAxIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRp bWVzICJ6ZXh0LmgiIDIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXItdGltZXMgImx3dSIgMSB9IH0gKi8KKy8qIHsgZGctZmluYWwg eyBzY2FuLWFzc2VtYmxlci10aW1lcyAibGh1IiAyIH0gfSAqLworLyogeyBk Zy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiYW5kXHQiIH0gfSAqLwpk aWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L2Fu ZC1leHRlbmQtMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2 L2FuZC1leHRlbmQtMi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwLi5mZTYzOWNkMWU4MgotLS0gL2Rldi9udWxsCisrKyBiL2dj Yy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9hbmQtZXh0ZW5kLTIuYwpA QCAtMCwwICsxLDI4IEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyog eyBkZy1vcHRpb25zICItbWFyY2g9cnYzMmdjX3piYV96YmIgLW1hYmk9aWxw MzIiIH0gKi8KKy8qIHsgZGctc2tpcC1pZiAiIiB7ICotKi0qIH0geyAiLU8w IiB9IH0gKi8KKwordm9pZAorZm9vKHVuc2lnbmVkIGxvbmcgYSwgdW5zaWdu ZWQgbG9uZyogcHRyKQoreworICAgIHB0clswXSA9IGEgJiAweGZmZmZmZmZm VUw7CisgICAgcHRyWzFdICY9IDB4ZmZmZmZmZmZVTDsKK30KKwordm9pZAor Zm9vMih1bnNpZ25lZCBsb25nIGEsIHVuc2lnbmVkIGxvbmcqIHB0cikKK3sK KyAgICBwdHJbMF0gPSBhICYgMHhmZmZmOworICAgIHB0clsxXSAmPSAweGZm ZmY7Cit9CisKK3ZvaWQKK2ZvbzModW5zaWduZWQgaW50IGEsIHVuc2lnbmVk IGludCogcHRyKQoreworICAgIHB0clswXSA9IGEgJiAweGZmZmY7CisgICAg cHRyWzFdICY9IDB4ZmZmZjsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4t YXNzZW1ibGVyLXRpbWVzICJ6ZXh0LmgiIDIgfSB9ICovCisvKiB7IGRnLWZp bmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImxodSIgMiB9IH0gKi8KKy8q IHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImFuZFx0IiB9IH0g Ki8K --0000000000007edb9a05fc61a75b--