From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.loongson.cn (mail.loongson.cn [114.242.206.163]) by sourceware.org (Postfix) with ESMTP id 851D93858C56 for ; Thu, 1 Aug 2024 01:08:27 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 851D93858C56 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=loongson.cn Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=loongson.cn ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 851D93858C56 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=114.242.206.163 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1722474510; cv=none; b=v8a4GeN8DUcrboKDO4fCD3GOaNKSoKXKojZI3h406+h4LLAUAfSSrTn0V5iJHqP8FOVPqyOEynp5zQSm2XB4EUpNV3HPaqOkI1tz0iNjOngTZI57TAheB9HZoeP67IPhvwGeqiK0FYn5QqEFcvWVVEJ/yok3C+81nEDApDZEDdQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1722474510; c=relaxed/simple; bh=G6zZa/lyi8eUyErIQn9yFwMjAPoyP3knjgLmySX81nU=; h=Subject:To:From:Message-ID:Date:MIME-Version; b=R5COC2FGs4b5tO7Y30jFivRmmPzZ/gIYMyOoUhAd1NS7GKFUfZgnmlz8ibcnEp2KLUlkX/Q1AmtrWAXMpq6POGQ9gSnHftMRtWx//7NTVxvEgwiawUU3p1GctqsJaOideE8GwOC1vP3pOYAo1bbduqkYfNY0kHIz9MOgY03uRDU= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from loongson.cn (unknown [10.20.4.107]) by gateway (Coremail) with SMTP id _____8Cx+ekI4KpmKYYFAA--.19228S3; Thu, 01 Aug 2024 09:08:24 +0800 (CST) Received: from [10.20.4.107] (unknown [10.20.4.107]) by front1 (Coremail) with SMTP id qMiowMCxf8cH4Kpm4UEJAA--.45844S3; Thu, 01 Aug 2024 09:08:23 +0800 (CST) Subject: Re: [PATCH] LoongArch: Rework bswap{hi,si,di}2 definition To: Xi Ruoyao , gcc-patches@gcc.gnu.org Cc: i@xen0n.name, xuchenghua@loongson.cn References: <20240729075837.6060-1-xry111@xry111.site> From: Lulu Cheng Message-ID: Date: Thu, 1 Aug 2024 09:08:22 +0800 User-Agent: Mozilla/5.0 (X11; Linux loongarch64; rv:68.0) Gecko/20100101 Thunderbird/68.7.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Content-Language: en-US X-CM-TRANSID:qMiowMCxf8cH4Kpm4UEJAA--.45844S3 X-CM-SenderInfo: xfkh0wpoxo3qxorr0wxvrqhubq/ X-Coremail-Antispam: 1Uk129KBj93XoW7Kw4xurWxKryUtFyUXryfZrc_yoW8GFy7pr WDG3WUtFZ7Xrs0gF4xK3ykXryYyr4xGrW5trZ8J34vy3yDKr92gF4FvFy7AF9xAw4vgr4Y qF4ft34xZFyYvwcCm3ZEXasCq-sJn29KB7ZKAUJUUUU8529EdanIXcx71UUUUU7KY7ZEXa sCq-sGcSsGvfJ3Ic02F40EFcxC0VAKzVAqx4xG6I80ebIjqfuFe4nvWSU5nxnvy29KBjDU 0xBIdaVrnRJUUUv0b4IE77IF4wAFF20E14v26r1j6r4UM7CY07I20VC2zVCF04k26cxKx2 IYs7xG6rWj6s0DM7CIcVAFz4kK6r106r15M28lY4IEw2IIxxk0rwA2F7IY1VAKz4vEj48v e4kI8wA2z4x0Y4vE2Ix0cI8IcVAFwI0_JFI_Gr1l84ACjcxK6xIIjxv20xvEc7CjxVAFwI 0_Jr0_Gr1l84ACjcxK6I8E87Iv67AKxVW8JVWxJwA2z4x0Y4vEx4A2jsIEc7CjxVAFwI0_ Gr0_Gr1UM2AIxVAIcxkEcVAq07x20xvEncxIr21l57IF6xkI12xvs2x26I8E6xACxx1l5I 8CrVACY4xI64kE6c02F40Ex7xfMcIj6xIIjxv20xvE14v26r106r15McIj6I8E87Iv67AK xVWUJVW8JwAm72CE4IkC6x0Yz7v_Jr0_Gr1lF7xvr2IY64vIr41lc7I2V7IY0VAS07AlzV AYIcxG8wCF04k20xvY0x0EwIxGrwCFx2IqxVCFs4IE7xkEbVWUJVW8JwC20s026c02F40E 14v26r1j6r18MI8I3I0E7480Y4vE14v26r106r1rMI8E67AF67kF1VAFwI0_JF0_Jw1lIx kGc2Ij64vIr41lIxAIcVC0I7IYx2IY67AKxVWUJVWUCwCI42IY6xIIjxv20xvEc7CjxVAF wI0_Jr0_Gr1lIxAIcVCF04k26cxKx2IYs7xG6r1j6r1xMIIF0xvEx4A2jsIE14v26r1j6r 4UMIIF0xvEx4A2jsIEc7CjxVAFwI0_Jr0_GrUvcSsGvfC2KfnxnUUI43ZEXa7IU1EksDUU UUU== X-Spam-Status: No, score=-8.0 required=5.0 tests=BAYES_00,KAM_DMARC_STATUS,NICE_REPLY_A,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: 在 2024/7/31 下午6:25, Xi Ruoyao 写道: > On Wed, 2024-07-31 at 16:57 +0800, Lulu Cheng wrote: >> 在 2024/7/29 下午3:58, Xi Ruoyao 写道: >>> Per a gcc-help thread we are generating sub-optimal code for >>> __builtin_bswap{32,64}.  To fix it: >>> >>> - Use a single revb.d instruction for bswapdi2. >>> - Use a single revb.2w instruction for bswapsi2 for TARGET_64BIT, >>>     revb.2h + rotri.w for !TARGET_64BIT. >>> - Use a single revb.2h instruction for bswapsi2 (x) r>> 16, and a single >>>     revb.2w instruction for bswapdi2 (x) r>> 32. >>> >>> Unfortunately I cannot figure out a way to make the compiler generate >>> revb.4h or revh.{2w,d} instructions. >> This optimization is really ingenious and I have no problem. >> >> I also haven't figured out how to generate revb.4h or revh. {2w,d}. >> I think we can merge this patch first. > Pushed r15-2433. Ok. Thanks! > > FWIW I tried a naive pattern for revh.2w: > > (set (match_operand:DI 0 "register_operand" "=r") > (ior:DI > (and:DI > (ashift:DI (match_operand:DI 1 "register_operand" "r") > (const_int 16)) > (const_int 18446462603027742720)) > (and:DI > (lshiftrt:DI (match_dup 1) > (const_int 16)) > (const_int 281470681808895)))) > But it seems too complex to be recognized. I think it needs to be recognized as a bswap operation in the tree-bswap phase, but it seems a bit difficult to be recognized >