From patchwork Sun May 29 10:55:44 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Takayuki 'January June' Suwa X-Patchwork-Id: 54485 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 294DF38387F9 for ; Sun, 29 May 2022 11:01:34 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 294DF38387F9 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1653822094; bh=lk6BPzmE8yEE+ACRMtvxVaG3tUxphPslMe1mk0/Ja1U=; h=Date:To:Subject:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=c2WBXc5ifAUDcboMxUkfSEdmdPf7NWMdua5ElPiUU0l7sa3L8HZ5djv1Fkrgq5VRI 7E4as5cxFQNeMI3TbTcFFvv3EoCd8X/Y9FWKqnZnoXEA49/3nwJjjmJpeDc0VITgas PkeSXvwPcrCyCSVblyrijPJ0cCw5PjmNyJzNJneE= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from nh505-vm0.bullet.mail.kks.yahoo.co.jp (nh505-vm0.bullet.mail.kks.yahoo.co.jp [183.79.57.102]) by sourceware.org (Postfix) with SMTP id 0617C385DC05 for ; Sun, 29 May 2022 11:00:07 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 0617C385DC05 Received: from [183.79.100.139] by nh505.bullet.mail.kks.yahoo.co.jp with NNFMP; 29 May 2022 11:00:06 -0000 Received: from [183.79.100.133] by t502.bullet.mail.kks.yahoo.co.jp with NNFMP; 29 May 2022 11:00:06 -0000 Received: from [127.0.0.1] by omp502.mail.kks.yahoo.co.jp with NNFMP; 29 May 2022 11:00:06 -0000 X-Yahoo-Newman-Property: ymail-3 X-Yahoo-Newman-Id: 214533.14149.bm@omp502.mail.kks.yahoo.co.jp Received: (qmail 55032 invoked by alias); 29 May 2022 11:00:06 -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:06 -0000 X-YMail-JAS: T0kpttIVM1lMtqDIeXCJfHVL5qrnYw_lqgnrWSgr_jyOjd0NGVNMnpmZIJDe9PO2pIScWBNGSp.jvUBsie3QthY8wrGnNmGkUR5jSjJh5siQ5_La0JY4k3FjMEAvXBDONv3W0cirkA-- X-Apparently-From: X-YMail-OSG: 4SN5nnsVM1las2YAX7HOxpe841xcTF9kghfgJlF9.TvmVEz 6b7vyRT1sU_s0orDCtNdyA4jUpISW8jPvH9aKTZBoMja0YrAmcNXV6tlsuDX dLbGVWxzo8oaDbIYj4eD4HyjOWIKHYzWGM_MYv.AWDV3RNfdTDNJfyXWu9do oOOm6IEFDQuCPOxrBQqBOeJeHQPjPYzcg4RXH6U2nFD1PQvM0z1eBqmSjen7 hDL1PX4o0DcNQx_aXjDNQlpM8SCduE2WGXmPCR9gOOAipp3bG6vzhrNm37Xa tttKZA_q4Yc31gAgL9L8KYtxQJdwbvF71RJHrOam2fFz_luAOButZC6i9dFW 7VxOELEmVN59rf4tXZ0UhrG5yQg0qYagZH5RnyzV7UprRV346elyfTVterR5 vt4MtknLm2.Y9xwTCddgYK5qAFhuADBuJLqWEgMJfTikxPixnjTZy.FiEFWj _YaU4_tqnB5qVfhDpSzdB34uFWBGFgWlp72XvE_O81J.g92WKrb1g76Fd_jy GiLwGMHlf839GVhbEX1DCibqgmRQRAJJVg_YQpTIWyMET_UnoXJdGZ8LodtE YjsPaChaPeZM_NtWiHGCitsTF1Yhnt.bnIrymFbzryWu.tQNyE0K3VRHGgxj PwYDRuIt_Jqd9ZlfTtgeACPvljOZnc23P0f1FxblZIW_Lr7usg5dNlwarara oN9vVlAaFx2hmrR8a8a55LBbr7Rb9f38Bffk4Sm34W5S3qbM6iSuCtKYfjpC XqvBE_O8G6sVVYCYyqhzKxLkvbsNLYHSgtK3SYI3sP7WZ9czrbMPBIwFC77H QTZahw_2hpbaC.kcbrO6rpDrhgealw2lWwToGPqemu9hLPXqXTE6IIgqi9cL szvsDfI1CE.Jo8QuTJO1njeON2mde2z9UzqfrQTTtsQ79W_e6P9z_g3mr015 mUF3qfxVpxO9Anx9cOA-- Message-ID: <123a21c0-f79a-70a4-9ee6-abf874e3a695@yahoo.co.jp> Date: Sun, 29 May 2022 19:55:44 +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 Subject: [PATCH 3/4] xtensa: Optimize '(~x & y)' to '((x & y) ^ y)' 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, 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 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-Patchwork-Original-From: Takayuki 'January June' Suwa via Gcc-patches From: Takayuki 'January June' Suwa Reply-To: Takayuki 'January June' Suwa Errors-To: gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org Sender: "Gcc-patches" In Xtensa ISA, there is no single machine instruction that calculates unary bitwise negation. gcc/ChangeLog: * config/xtensa/xtensa.md (*andsi3_bitcmpl): New insn_and_split pattern. gcc/testsuite/ChangeLog: * gcc.target/xtensa/check_zero_byte.c: New. --- gcc/config/xtensa/xtensa.md | 20 +++++++++++++++++++ .../gcc.target/xtensa/check_zero_byte.c | 9 +++++++++ 2 files changed, 29 insertions(+) create mode 100644 gcc/testsuite/gcc.target/xtensa/check_zero_byte.c diff --git a/gcc/config/xtensa/xtensa.md b/gcc/config/xtensa/xtensa.md index f11ae4910f8..4aa128eab64 100644 --- a/gcc/config/xtensa/xtensa.md +++ b/gcc/config/xtensa/xtensa.md @@ -601,6 +601,26 @@ (set_attr "mode" "SI") (set_attr "length" "3,3")]) +(define_insn_and_split "*andsi3_bitcmpl" + [(set (match_operand:SI 0 "register_operand" "=a") + (and:SI (not:SI (match_operand:SI 1 "register_operand" "r")) + (match_operand:SI 2 "register_operand" "r")))] + "" + "#" + "&& can_create_pseudo_p ()" + [(set (match_dup 3) + (and:SI (match_dup 1) + (match_dup 2))) + (set (match_dup 0) + (xor:SI (match_dup 3) + (match_dup 2)))] +{ + operands[3] = gen_reg_rtx (SImode); +} + [(set_attr "type" "arith") + (set_attr "mode" "SI") + (set_attr "length" "6")]) + (define_insn "iorsi3" [(set (match_operand:SI 0 "register_operand" "=a") (ior:SI (match_operand:SI 1 "register_operand" "%r") diff --git a/gcc/testsuite/gcc.target/xtensa/check_zero_byte.c b/gcc/testsuite/gcc.target/xtensa/check_zero_byte.c new file mode 100644 index 00000000000..6a04aaeefa0 --- /dev/null +++ b/gcc/testsuite/gcc.target/xtensa/check_zero_byte.c @@ -0,0 +1,9 @@ +/* { dg-do compile } */ +/* { dg-options "-O" } */ + +int check_zero_byte(int v) +{ + return (v - 0x01010101) & ~v & 0x80808080; +} + +/* { dg-final { scan-assembler-not "movi" } } */