From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from nh601-vm12.bullet.mail.ssk.yahoo.co.jp (nh601-vm12.bullet.mail.ssk.yahoo.co.jp [182.22.90.21]) by sourceware.org (Postfix) with SMTP id 887EB385E833 for ; Sun, 29 May 2022 11:00:09 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 887EB385E833 Received: from [182.22.66.104] by nh601.bullet.mail.ssk.yahoo.co.jp with NNFMP; 29 May 2022 11:00:07 -0000 Received: from [182.22.91.131] by t602.bullet.mail.ssk.yahoo.co.jp with NNFMP; 29 May 2022 11:00:07 -0000 Received: from [127.0.0.1] by omp604.mail.ssk.yahoo.co.jp with NNFMP; 29 May 2022 11:00:07 -0000 X-Yahoo-Newman-Property: ymail-3 X-Yahoo-Newman-Id: 680856.30293.bm@omp604.mail.ssk.yahoo.co.jp Received: (qmail 55039 invoked by alias); 29 May 2022 11:00:07 -0000 Received: from unknown (HELO ?192.168.2.3?) (175.177.45.170 with ) by smtp5002.mail.kks.ynwp.yahoo.co.jp with SMTP; 29 May 2022 11:00:07 -0000 X-YMail-JAS: 6sF_ioEVM1nDP1aitFu9ih2XuqjM95dxgjq.Nl7JyyWuMC8G2Guju1cboobfQH8nxfbxxl.t42pzxG8vce9Tsbb42HEtwwoTWqhDjOIaQEyAVGs7QGWkuLB8CSQT4s6CE0RBHv_pJw-- X-Apparently-From: X-YMail-OSG: o5mw7EwVM1n8dxv8QxJwpImOUADjLMus1hAFQEfuWbj1OxZ UdvitgSRz9jUJeud_xQTok3dnwcb9tyZ2UvuIQOYZyOuE2AyRSRi7TmT06wg gkXQBsOpemWrPkxdyuUhayBEkcBBEPCAri4x1Ha8CGP3o_X4IXwgjMEUT9tM TdK0tTQ0RhzfydQdieVfMwGNPQ_bEk7P0c8kCO4s29dsGcQv1GnGCgGMSWrj LyojsN3Gs5nKLNShmkGqIYb0TwaNbwvozOTiZEV85pQuTOIw5hdPLP8NeR2b w8QkM2BX1WaqrrBgfu9sYzik9wk5yXe5x72UUlP58Nyk_pxpXwv6V0deFXxN vmZDM4seAzjJomViBDGG0OORQaHsy0v.RfSBBQcA6ieHhzACwWR_HPX7H3vs SW5UX78sq5IPIukmoKS.8bPbMfA.Qi6p6SigWRfSaNDzDKZOY2_sQ8kR2_Nr qWse76k0nlHzb9PKizFcVRcOPzoyEXNcmiPng0MqzR3mW03h9Hphnf.V402. Ej5JOSQCu.4OlU7cqQRVIuNNOvUZDwU7jzC2PI5C8F8IADWTC1gAlaVHOcyq eghK0uT.BIYiVY5CqY9JqJKL58UGu_Ogzg6ZZEBRcKdXyYebQHv9oci5ZCwW fGYjYjQAUUfw3F_MnRwnZ_xdnhZXUwv_r8cxqWUXR2afc0oyoSPW2RGY6NG2 mI8pD0XKJtU4J_kwl_LYxIRVOkk4OjMpSFukb8N3yHFXyh5Nws7xJWd.BFzz 1_YO1qHdV4XDvwp2e3UuPYCzrdCzLAmShABdFsBSqO8dAt5hnoTDNjHeiEE3 qDFYrQWlpAWgo2Bn782gfD2nXlboYxR7gLBhTR14Ws1m.xFCBHbhGIEAzOm4 nBAa0z3rnDIgwI4KzJmJc4omIBuaV6GptEGZjByaNnJeCKwn_mkfblNEFIor J2KhvREOWmVJWxeqJFA-- Message-ID: <0d69cc30-47f6-0bbd-c482-5a5c60a37252@yahoo.co.jp> Date: Sun, 29 May 2022 19:57:35 +0900 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.9.1 Content-Language: en-US To: GCC Patches From: Takayuki 'January June' Suwa Subject: [PATCH 4/4] xtensa: Add clrsbsi2 insn pattern Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-12.7 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, 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 X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 29 May 2022 11:00:11 -0000 > (clrsb:m x) > Represents the number of redundant leading sign bits in x, represented > as an integer of mode m, starting at the most significant bit position. This explanation is just what the NSA instruction (not ever emitted before) calculates in Xtensa ISA. gcc/ChangeLog: * config/xtensa/xtensa.md (clrsbsi2): New insn pattern. libgcc/ChangeLog: * config/xtensa/lib1funcs.S (__clrsbsi2): New function. * config/xtensa/t-xtensa (LIB1ASMFUNCS): Add _clrsbsi2. --- gcc/config/xtensa/xtensa.md | 12 +++++++++++- libgcc/config/xtensa/lib1funcs.S | 23 +++++++++++++++++++++++ libgcc/config/xtensa/t-xtensa | 2 +- 3 files changed, 35 insertions(+), 2 deletions(-) diff --git a/gcc/config/xtensa/xtensa.md b/gcc/config/xtensa/xtensa.md index 4aa128eab64..dec49cc942b 100644 --- a/gcc/config/xtensa/xtensa.md +++ b/gcc/config/xtensa/xtensa.md @@ -429,7 +429,17 @@ (set_attr "length" "3")]) -;; Count leading/trailing zeros and find first bit. +;; Count redundant leading sign bits and leading/trailing zeros, +;; and find first bit. + +(define_insn "clrsbsi2" + [(set (match_operand:SI 0 "register_operand" "=a") + (clrsb:SI (match_operand:SI 1 "register_operand" "r")))] + "TARGET_NSA" + "nsa\t%0, %1" + [(set_attr "type" "arith") + (set_attr "mode" "SI") + (set_attr "length" "3")]) (define_insn "clzsi2" [(set (match_operand:SI 0 "register_operand" "=a") diff --git a/libgcc/config/xtensa/lib1funcs.S b/libgcc/config/xtensa/lib1funcs.S index 5a2bd20534f..3932d206256 100644 --- a/libgcc/config/xtensa/lib1funcs.S +++ b/libgcc/config/xtensa/lib1funcs.S @@ -456,6 +456,29 @@ __nsau_data: #endif /* L_clz */ +#ifdef L_clrsbsi2 + .align 4 + .global __clrsbsi2 + .type __clrsbsi2, @function +__clrsbsi2: + leaf_entry sp, 16 +#if XCHAL_HAVE_NSA + nsa a2, a2 +#else + srai a3, a2, 31 + xor a3, a3, a2 + movi a2, 31 + beqz a3, .Lreturn + do_nsau a2, a3, a4, a5 + addi a2, a2, -1 +.Lreturn: +#endif + leaf_return + .size __clrsbsi2, . - __clrsbsi2 + +#endif /* L_clrsbsi2 */ + + #ifdef L_clzsi2 .align 4 .global __clzsi2 diff --git a/libgcc/config/xtensa/t-xtensa b/libgcc/config/xtensa/t-xtensa index 9836c96aefc..084618b382e 100644 --- a/libgcc/config/xtensa/t-xtensa +++ b/libgcc/config/xtensa/t-xtensa @@ -1,6 +1,6 @@ LIB1ASMSRC = xtensa/lib1funcs.S LIB1ASMFUNCS = _mulsi3 _divsi3 _modsi3 _udivsi3 _umodsi3 \ - _umulsidi3 _clz _clzsi2 _ctzsi2 _ffssi2 \ + _umulsidi3 _clz _clrsbsi2 _clzsi2 _ctzsi2 _ffssi2 \ _ashldi3 _ashrdi3 _lshrdi3 \ _bswapsi2 _bswapdi2 \ _negsf2 _addsubsf3 _mulsf3 _divsf3 _cmpsf2 _fixsfsi _fixsfdi \ -- 2.20.1