From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from loongson.cn (mail.loongson.cn [114.242.206.163]) by sourceware.org (Postfix) with ESMTP id DAD53385843E for ; Fri, 8 Jul 2022 01:23:15 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org DAD53385843E Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=loongson.cn Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=loongson.cn Received: from [10.20.4.52] (unknown [10.20.4.52]) by mail.loongson.cn (Coremail) with SMTP id AQAAf9Dx_9AAh8dibF4QAA--.4243S2; Fri, 08 Jul 2022 09:23:13 +0800 (CST) Subject: Re: [PATCH 0/2] loongarch: improve code generation for integer division To: Xi Ruoyao , gcc-patches@gcc.gnu.org Cc: Chenghua Xu , Wang Xuerui References: <535ed6eaa19df38309a773f9bf2542c65f715b6b.camel@xry111.site> From: Lulu Cheng Message-ID: <00f90ea2-6cda-9adf-2dfa-210828fbf996@loongson.cn> Date: Fri, 8 Jul 2022 09:23:12 +0800 User-Agent: Mozilla/5.0 (X11; Linux mips64; rv:68.0) Gecko/20100101 Thunderbird/68.7.0 MIME-Version: 1.0 In-Reply-To: <535ed6eaa19df38309a773f9bf2542c65f715b6b.camel@xry111.site> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Content-Language: en-US X-CM-TRANSID: AQAAf9Dx_9AAh8dibF4QAA--.4243S2 X-Coremail-Antispam: 1UD129KBjvJXoWxJr17tw4rKF1DAF1rXFykGrg_yoW8GFWrpa y7Cr1rtF48GFZrGr97Xa45XrsxXrn3GrWav3Wft34Ikry2vry2qF18K393uFW5Ja4UZryS qrWIkw15W3W2va7anT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUvv14x267AKxVWUJVW8JwAFc2x0x2IEx4CE42xK8VAvwI8IcIk0 rVWrJVCq3wAFIxvE14AKwVWUJVWUGwA2ocxC64kIII0Yj41l84x0c7CEw4AK67xGY2AK02 1l84ACjcxK6xIIjxv20xvE14v26ryj6F1UM28EF7xvwVC0I7IYx2IY6xkF7I0E14v26F4j 6r4UJwA2z4x0Y4vEx4A2jsIE14v26F4j6r4UJwA2z4x0Y4vEx4A2jsIEc7CjxVAFwI0_Gr 1j6F4UJwAS0I0E0xvYzxvE52x082IY62kv0487Mc02F40EFcxC0VAKzVAqx4xG6I80ewAv 7VC0I7IYx2IY67AKxVWUJVWUGwAv7VC2z280aVAFwI0_Jr0_Gr1lOx8S6xCaFVCjc4AY6r 1j6r4UM4x0Y48IcVAKI48JM4x0x7Aq67IIx4CEVc8vx2IErcIFxwCYjI0SjxkI62AI1cAE 67vIY487MxkIecxEwVCm-wCF04k20xvY0x0EwIxGrwCFx2IqxVCFs4IE7xkEbVWUJVW8Jw C20s026c02F40E14v26r1j6r18MI8I3I0E7480Y4vE14v26r106r1rMI8E67AF67kF1VAF wI0_JF0_Jw1lIxkGc2Ij64vIr41lIxAIcVC0I7IYx2IY67AKxVWUJVWUCwCI42IY6xIIjx v20xvEc7CjxVAFwI0_Jr0_Gr1lIxAIcVCF04k26cxKx2IYs7xG6rW3Jr0E3s1lIxAIcVC2 z280aVAFwI0_Jr0_Gr1lIxAIcVC2z280aVCY1x0267AKxVWUJVW8JbIYCTnIWIevJa73Uj IFyTuYvjfU5WlkUUUUU X-CM-SenderInfo: xfkh0wpoxo3qxorr0wxvrqhubq/ X-Spam-Status: No, score=-6.4 required=5.0 tests=BAYES_00, KAM_DMARC_STATUS, KAM_SHORT, NICE_REPLY_A, SCC_BODY_URI_ONLY, SPF_HELO_PASS, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=no 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: Fri, 08 Jul 2022 01:23:18 -0000 在 2022/7/7 上午10:23, Xi Ruoyao 写道: > We were generating some unnecessary instructions for integer division. > These two patches improve the code generation to compile > > template T div(T a, T b) { return a / b; } > > into a single division instruction (along with a return instruction of > course) as we expected for T in {int32_t, uint32_t, int64_t}. > > Bootstrapped and regtested on loongarch64-linux-gnu. Ok for trunk? > > Xi Ruoyao (2): > loongarch: add alternatives for idiv insns to improve code generation > loongarch: avoid unnecessary sign-extend after 32-bit division > > gcc/config/loongarch/loongarch-protos.h | 1 + > gcc/config/loongarch/loongarch.cc | 2 +- > gcc/config/loongarch/loongarch.md | 34 ++++++++++++++++------ > gcc/testsuite/gcc.target/loongarch/div-1.c | 9 ++++++ > gcc/testsuite/gcc.target/loongarch/div-2.c | 9 ++++++ > gcc/testsuite/gcc.target/loongarch/div-3.c | 9 ++++++ > gcc/testsuite/gcc.target/loongarch/div-4.c | 9 ++++++ > 7 files changed, 63 insertions(+), 10 deletions(-) > create mode 100644 gcc/testsuite/gcc.target/loongarch/div-1.c > create mode 100644 gcc/testsuite/gcc.target/loongarch/div-2.c > create mode 100644 gcc/testsuite/gcc.target/loongarch/div-3.c > create mode 100644 gcc/testsuite/gcc.target/loongarch/div-4.c > I am testing the spec and it can be done today or tomorrow.