From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pl1-x62c.google.com (mail-pl1-x62c.google.com [IPv6:2607:f8b0:4864:20::62c]) by sourceware.org (Postfix) with ESMTPS id 311C83858433 for ; Tue, 23 Nov 2021 17:57:01 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 311C83858433 Received: by mail-pl1-x62c.google.com with SMTP id y8so17754819plg.1 for ; Tue, 23 Nov 2021 09:57:01 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:date:mime-version:user-agent:subject :content-language:to:references:from:in-reply-to :content-transfer-encoding; bh=oERL/zUUmM8YGS/koj7NZSY1R87pz00YdrUvual26Lo=; b=Pr6kYAlZVihK5g/sioQwQUZceHX3DEVZajXfyblQgd8IQbPVUJInB1cXMXDpQ1ngEj msnwrQx4o092Y0PkH8fWgazeR+BcSdKVBkD/yh5XRCOzPUk1v+DHA00ZJVYV/hiFDuq2 FOuaYsY0PZYQFgFUOIQu2XxXfhS33lvGfWmyyVjcufRSnJ+NaalCEHM+vujo6dIg4Y3C 5cd4gKDKUA1Kw+H8LzgMxvipaazxdHHHGfgUk68WLhg/oxWqBx+PIxYMzX/tLFoTselk BvZSYoSF2sS16MnP52JbNzPigr6jkXc6viUAlj36cRbE5JWA9jxCpkT2DP4w1n14tWTn tqfw== X-Gm-Message-State: AOAM533eXxPHG0cUaRiA2JeOIiFqS0cSothEVs7x1FfX2Bfl6RKPycFn ciihnkYeaU+MxYq6BaBw0bc= X-Google-Smtp-Source: ABdhPJxYujb/Zq9UTLursIB3Gctc3gU8nXWN+o/b8mJ8erJEwVBe6FF6EsEgaLT6P/kMmcx5eYmoJw== X-Received: by 2002:a17:90a:4815:: with SMTP id a21mr5218495pjh.111.1637690220157; Tue, 23 Nov 2021 09:57:00 -0800 (PST) Received: from [172.31.0.175] (c-98-202-48-222.hsd1.ut.comcast.net. [98.202.48.222]) by smtp.gmail.com with ESMTPSA id lx15sm2040032pjb.44.2021.11.23.09.56.59 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 23 Nov 2021 09:56:59 -0800 (PST) Message-ID: Date: Tue, 23 Nov 2021 10:56:59 -0700 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.3.0 Subject: Re: [PATCH] Enhance optimize_atomic_bit_test_and to handle truncation. Content-Language: en-US To: liuhongt , gcc-patches@gcc.gnu.org References: <20211117052005.91656-1-hongtao.liu@intel.com> From: Jeff Law In-Reply-To: <20211117052005.91656-1-hongtao.liu@intel.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-4.3 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, KAM_SHORT, NICE_REPLY_A, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) 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: Tue, 23 Nov 2021 17:57:03 -0000 On 11/16/2021 10:20 PM, liuhongt via Gcc-patches wrote: > r12-5102-gfb161782545224f5 improves integer bit test on > __atomic_fetch_[or|and]_* returns only for nop_convert, .i.e. > > transfrom > > mask_5 = 1 << bit_4(D); > mask.0_1 = (unsigned int) mask_5; > _2 = __atomic_fetch_or_4 (a_7(D), mask.0_1, 0); > t1_9 = (int) _2; > t2_10 = mask_5 & t1_9; > > to > > mask_5 = 1 << n_4(D); > mask.1_1 = (unsigned int) mask_5; > _11 = .ATOMIC_BIT_TEST_AND_SET (&pscc_a_1_4, n_4(D), 0); > _8 = (int) _11; > > And this patch extend the original patch to handle truncation. > .i.e. > > transform > > long int mask; > mask_8 = 1 << n_7(D); > mask.0_1 = (long unsigned int) mask_8; > _2 = __sync_fetch_and_or_8 (&pscc_a_2_3, mask.0_1); > _3 = (unsigned int) _2; > _4 = (unsigned int) mask_8; > _5 = _3 & _4; > _6 = (int) _5; > > to > > long int mask; > mask_8 = 1 << n_7(D); > mask.0_1 = (long unsigned int) mask_8; > _14 = .ATOMIC_BIT_TEST_AND_SET (&pscc_a_2_3, n_7(D), 0); > _5 = (unsigned int) _14; > _6 = (int) _5; > > Bootstrapped and regtested on x86_64-pc-linux-gnu{-m32,} > Ok for trunk? > > 2021-11-17 Hongtao Liu > H.J. Lu > > gcc/ChangeLog: > > PR tree-optimization/103194 > * match.pd (gimple_nop_atomic_bit_test_and_p): Extended to > match truncation. > * tree-ssa-ccp.c (gimple_nop_convert): Declare. > (optimize_atomic_bit_test_and): Enhance > optimize_atomic_bit_test_and to handle truncation. > > gcc/testsuite/ChangeLog: > > * gcc.target/i386/pr103194-2.c: New test. > * gcc.target/i386/pr103194-3.c: New test. > * gcc.target/i386/pr103194-4.c: New test. > * gcc.target/i386/pr103194-5.c: New test. > * gcc.target/i386/pr103194.c: New test. OK jeff