From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from nh604-vm10.bullet.mail.ssk.yahoo.co.jp (nh604-vm10.bullet.mail.ssk.yahoo.co.jp [182.22.90.67]) by sourceware.org (Postfix) with SMTP id A8CD43858CDB for ; Sat, 10 Sep 2022 09:44:45 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org A8CD43858CDB Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=yahoo.co.jp Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=yahoo.co.jp Received: from [182.22.66.104] by nh604.bullet.mail.ssk.yahoo.co.jp with NNFMP; 10 Sep 2022 09:44:42 -0000 Received: from [182.22.91.133] by t602.bullet.mail.ssk.yahoo.co.jp with NNFMP; 10 Sep 2022 09:44:42 -0000 Received: from [127.0.0.1] by omp606.mail.ssk.yahoo.co.jp with NNFMP; 10 Sep 2022 09:44:41 -0000 X-Yahoo-Newman-Property: ymail-3 X-Yahoo-Newman-Id: 988110.31857.bm@omp606.mail.ssk.yahoo.co.jp Received: (qmail 65300 invoked by alias); 10 Sep 2022 09:44:41 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.co.jp; s=yj20110701; t=1662803081; bh=cwzltQgp0bhhly+7sAE8of/QxSAPJFyaXo9Q0Mbst5s=; h=Received:X-YMail-JAS:X-Apparently-From:X-YMail-OSG:Message-ID:Date:MIME-Version:User-Agent:To:Cc:From:Subject:Content-Type:Content-Transfer-Encoding; b=q5qbCaBjEuVNSSe4vNsGPpMdJRe2dLuo3qgqESMh2sw9VPy1T264NOjXzR7sYrgk0MDQ10lUtCUn+yCRRLstPGUF3b98Bnah49/BYTlHQSrBxRHCmFRLh27h4Xkg4zRakyX1my3GNsEzhELd87tGBmUMOahd5/+Xqo1kTEyRsuU= DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=yj20110701; d=yahoo.co.jp; h=Received:X-YMail-JAS:X-Apparently-From:X-YMail-OSG:Message-ID:Date:MIME-Version:User-Agent:To:Cc:From:Subject:Content-Type:Content-Transfer-Encoding; b=H0c23cspixlet83I6nNlvAbisu8XW4FfsUy6ZWRiy2zq4b/x9Kj3+n/PpZ9Pr56B9uEl4GQeni2BmOSJ1j6kLQLS5t4ncvKM6JhOyc8qdEOEOah+lyDaDL1YKEV5FXIVnQiA1YQNndZNMm/ymkGDWE2os/P2nS2bbWbSuCB6oa4= ; Received: from unknown (HELO ?192.168.150.75?) (183.77.162.93 with ) by smtp5006.mail.kks.ynwp.yahoo.co.jp with SMTP; 10 Sep 2022 09:44:41 -0000 X-YMail-JAS: tLgBwY4VM1mEHZiaEjtR2g3wuxeQKIL0CsB8ze0r2eIXqWmPqm4vFYpWtOBIJ1Xlk9lWIpTiODbJlLghkr.2rY4SOogOU21zr.E.3_FVVTzWYSfZ5cepPBoNrI4MUljMRi52wt1YHw-- X-Apparently-From: X-YMail-OSG: WOIsP2AVM1nJto7umL0DlyBtdo8FFCUaLhRMCGm69CP6PMO 8RS_hubL0vzanmEy19NP4Hc4T5.mUP1wtjdCnee6O5vNZwmynaQkpoBcwxXJ 34nA06MyIWkxvbod97xdqiTMryRpft1eeXD9th8k6AQv_TIAexBmL.z6qBYn 4_L3COEamdRWMbRgbLPM6nu9.LV3r_vvCGQnlY0FUHRatHmSFBcCTlWVUlWn oRbXmWHWJqr1OyqoBi29A1EBMCCo1dGjO4H1NKmywr0bVwOctYDyq7qq.9.s 7PjVKxlS9XZ2sSToLrmDODb3WR1NzJ0qT2hGL3M2YgvRka7S2KNDR_2IQqLo 7n1jfN7eqmjuMdiViijsdqsnQ9qk.1RMSgLSxRMkY6KwjpUM_R1f3LmvHeRk DY5V59LgDgveYJzYCqH7nslHY8JtpEKMip6js4oxb_16RZKj_djNpWcIcFje bAkHStvOkAwUWFX7_KH_9HQuLR.eV5lTzzIagycDj9_F7.QECHep8K0EGMW7 PjrrGMcaKqPo1pP26QrvrBJeYv9a0bqNN96.c9fAXSwLZ1Zbp.bSRDxmIgso BykOQVnH6kmbQI6ONe5GDGL8WkYL_t1rctQy5g14NubC_6GxfzChyal3w_Jf NyY0MD3Vc5qxhED6dafoHWufdlTd0ogpFBMQXOCCjOj8x763IJTvoaTuMrPt nnwpLfrZ0iBuFDz5bVH8YibNInUH8s3dywsrHfpI7rR9kcWxUPBWqDyexFSc .3INFg0eO9K111RJoXTjCbYjB7SPmB0B6ojt7439gmkoplv66ocsxqpAJbln z9CQdvjgDEDMKYoxVhb7gKUMn5.tBuBqqvgLsCYUYXeQrCo.QAZXZqQRY14m qcIICGOtEnCQZ6FJtVfBh4QLQ51GLT1OAoxHTmCjel_4JftDAsOCkRR.pAHE 0qJA6frFcP8tE8vsM Message-ID: Date: Sat, 10 Sep 2022 18:29:45 +0900 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.2.2 To: GCC Patches Cc: Max Filippov From: Takayuki 'January June' Suwa Subject: [PATCH] xtensa: constantsynth: Add new 3-insns synthesis pattern Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-12.9 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,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: This patch adds a new 3-instructions constant synthesis pattern: - A value that can fit into a signed 12-bit after a number of either bitwise left or right rotations: => "MOVI(.N) Ax, simm12" + "SSAI (1 ... 11) or (21 ... 31)" + "SRC Ax, Ax, Ax" gcc/ChangeLog: * config/xtensa/xtensa.cc (xtensa_constantsynth): Add new pattern for the abovementioned case. gcc/testsuite/ChangeLog: * gcc.target/xtensa/constsynth_3insns.c (test_4): Add new test function. --- gcc/config/xtensa/xtensa.cc | 31 +++++++++++++++++++ .../gcc.target/xtensa/constsynth_3insns.c | 11 +++++++ 2 files changed, 42 insertions(+) diff --git a/gcc/config/xtensa/xtensa.cc b/gcc/config/xtensa/xtensa.cc index 0f586b09dfb..ac52c015a94 100644 --- a/gcc/config/xtensa/xtensa.cc +++ b/gcc/config/xtensa/xtensa.cc @@ -1142,6 +1142,37 @@ xtensa_constantsynth (rtx dst, HOST_WIDE_INT srcval) xtensa_constantsynth_rtx_ADDSUBX, divisor)) return 1; + + /* loading simm12 followed by left/right bitwise rotation: + MOVI + SSAI + SRC. */ + if ((srcval & 0x001FF800) == 0 + || (srcval & 0x001FF800) == 0x001FF800) + { + int32_t v; + + for (shift = 1; shift < 12; ++shift) + { + v = (int32_t)(((uint32_t)srcval >> shift) + | ((uint32_t)srcval << (32 - shift))); + if (xtensa_simm12b(v)) + { + emit_move_insn (dst, GEN_INT (v)); + emit_insn (gen_rotlsi3 (dst, dst, GEN_INT (shift))); + return 1; + } + } + for (shift = 1; shift < 12; ++shift) + { + v = (int32_t)(((uint32_t)srcval << shift) + | ((uint32_t)srcval >> (32 - shift))); + if (xtensa_simm12b(v)) + { + emit_move_insn (dst, GEN_INT (v)); + emit_insn (gen_rotrsi3 (dst, dst, GEN_INT (shift))); + return 1; + } + } + } } return 0; diff --git a/gcc/testsuite/gcc.target/xtensa/constsynth_3insns.c b/gcc/testsuite/gcc.target/xtensa/constsynth_3insns.c index f3c4a1c7c15..831288c7ddd 100644 --- a/gcc/testsuite/gcc.target/xtensa/constsynth_3insns.c +++ b/gcc/testsuite/gcc.target/xtensa/constsynth_3insns.c @@ -21,4 +21,15 @@ void test_3(int *p) *p = 192437; } +struct foo +{ + unsigned int b : 10; + unsigned int g : 11; + unsigned int r : 11; +}; +void test_4(struct foo *p, unsigned int v) +{ + p->g = v; +} + /* { dg-final { scan-assembler-not "l32r" } } */ -- 2.20.1