From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pf1-x42e.google.com (mail-pf1-x42e.google.com [IPv6:2607:f8b0:4864:20::42e]) by sourceware.org (Postfix) with ESMTPS id BCC573858D28 for ; Wed, 31 May 2023 00:49:13 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org BCC573858D28 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-pf1-x42e.google.com with SMTP id d2e1a72fcca58-64d4e45971bso3510261b3a.2 for ; Tue, 30 May 2023 17:49:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1685494153; x=1688086153; h=content-transfer-encoding:in-reply-to:from:references:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=6CeBNllElWVDfDBoDZvl7pT7rEtLtIjHg9LoGb8zMEM=; b=XmrQb8qrujL+TZNTT8r8ASJgPNDCvQW9Z/CuoHr3TA4zYhI8SO0bG0Q9Gud4W2CHYd hcntIUAYGwJSbvJ0Q8VgrQ7M7nH0Hj9jI3aLFo4HijbggPzvUclai3Tn0FazK1Apm3tF iBHX05g85t/ykSEMHsF2ZPuYT7RhnIATgC13MOddjpqL+MnIpYvi3qAV5S53C4Lc/EtU 713xfu/K73W0Cz2uOqbE54UWcxIjZu39tBTISvGJLRQaY73UqdUXFlHTpjm2nYw+LoaO mqPdfq5SQFK6f2ykyA7JRUfj3Z/xjuWgUZH4HTkwS2ZNjyizyVXsiyHYtaeJiOSKI1iK 4jfQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685494153; x=1688086153; h=content-transfer-encoding:in-reply-to:from:references:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=6CeBNllElWVDfDBoDZvl7pT7rEtLtIjHg9LoGb8zMEM=; b=k6WUoKlJGsHI049OLxWEUltK1hQCuqIl2vwNUPXNf0/5Rz3ksYpYWSXxqoJlnrkmX/ BjK5WqzLdVoHpC5GXofRPK6HFobv05auXEtywm7StSXT4pb7QUnpXDdnXYdONQxjw7FD mNv8dVLJ1uXTQyJU/sNkBjcVML1vlEUaapeIopDL7drfduLwMZkKatQTAxi/0P53gdwG 1bO9ImVtre4iA57YnpDSu78gYmf3XWQmfGJWdv2gruLaX59hmdsfCUekx7G7p5xn71Pq ZnDeM05/TPC0dzbvQE4Norhsk7RtJZXHubScjGVAjjW2WPD/ev6QVFO/7j4qPhn/cIF/ gKaA== X-Gm-Message-State: AC+VfDwEIQYj3VFw/UZaDhw/x7yVamVl/O4kqSF9QSuH0suacNUvG2jb VX6rwKHvedXq0Eq4YUykOVA= X-Google-Smtp-Source: ACHHUZ5TsjgelD4pBjLcyj4XV1VGIORP9/4M2kXvosZn1aazgXVkzkoycx4xCOi96dXFTVDuub246A== X-Received: by 2002:a05:6a00:80a:b0:64b:20cd:6d52 with SMTP id m10-20020a056a00080a00b0064b20cd6d52mr4899809pfk.14.1685494152461; Tue, 30 May 2023 17:49:12 -0700 (PDT) Received: from ?IPV6:2601:681:8d00:265::f0a? ([2601:681:8d00:265::f0a]) by smtp.gmail.com with ESMTPSA id m15-20020aa7900f000000b0064d59e194b3sm2183152pfo.113.2023.05.30.17.49.11 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 30 May 2023 17:49:11 -0700 (PDT) Message-ID: <28bd33c8-8bbd-aacc-fc23-661b61a01105@gmail.com> Date: Tue, 30 May 2023 18:49:10 -0600 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.9.1 Subject: Re: [RFC] RISC-V: Eliminate extension after for *w instructions Content-Language: en-US To: Jivan Hakobyan , gcc-patches@gcc.gnu.org References: From: Jeff Law In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-8.5 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,KAM_SHORT,NICE_REPLY_A,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 List-Id: On 5/24/23 17:14, Jivan Hakobyan via Gcc-patches wrote: > > gcc/ChangeLog: > * config/riscv/bitmanip.md (rotrdi3): New pattern. > (rotrsi3): Likewise. > (rotlsi3): Likewise. > * config/riscv/riscv-protos.h (riscv_emit_binary): New function > declaration > * config/riscv/riscv.cc (riscv_emit_binary): Removed static > * config/riscv/riscv.md (addsi3): New pattern > (subsi3): Likewise. > (negsi2): Likewise. > (mulsi3): Likewise. > (si3): New pattern for any_div. > (si3): New pattern for any_shift. > * loop-iv.cc (get_biv_step_1): Process src of extension when it > PLUS > > gcc/testsuite/ChangeLog: > * testsuite/gcc.target/riscv/shift-and-2.c: New test > * testsuite/gcc.target/riscv/shift-shift-2.c: New test > * testsuite/gcc.target/riscv/sign-extend.c: New test > * testsuite/gcc.target/riscv/zbb-rol-ror-03.c: New test > > > -- With the best regards Jivan Hakobyan > > > diff --git a/gcc/loop-iv.cc b/gcc/loop-iv.cc > index 6c40db947f7f549303f8bb4d4f38aa98b6561bcc..bec1ea7e4ccf7291bb3dba91161f948e66c7bea9 100644 > --- a/gcc/loop-iv.cc > +++ b/gcc/loop-iv.cc > @@ -637,7 +637,7 @@ get_biv_step_1 (df_ref def, scalar_int_mode outer_mode, rtx reg, > { > rtx set, rhs, op0 = NULL_RTX, op1 = NULL_RTX; > rtx next, nextr; > - enum rtx_code code; > + enum rtx_code code, prev_code; > rtx_insn *insn = DF_REF_INSN (def); > df_ref next_def; > enum iv_grd_result res; > @@ -697,6 +697,23 @@ get_biv_step_1 (df_ref def, scalar_int_mode outer_mode, rtx reg, > return false; > > op0 = XEXP (rhs, 0); > + > + if (GET_CODE (op0) == PLUS) > + { > + rhs = op0; > + op0 = XEXP (rhs, 0); > + op1 = XEXP (rhs, 1); > + > + if (CONSTANT_P (op0)) > + std::swap (op0, op1); > + > + if (!simple_reg_p (op0) || !CONSTANT_P (op1)) > + return false; > + > + prev_code = code; > + code = PLUS; > + } > + > if (!simple_reg_p (op0)) > return false; > > @@ -769,6 +786,11 @@ get_biv_step_1 (df_ref def, scalar_int_mode outer_mode, rtx reg, > else > *outer_step = simplify_gen_binary (code, outer_mode, > *outer_step, op1); > + > + if (prev_code == SIGN_EXTEND) > + *extend = IV_SIGN_EXTEND; > + else if (prev_code == ZERO_EXTEND) > + *extend = IV_ZERO_EXTEND; > break; So I'm still working through the basics of loop-iv.cc, but one thing I did notice is that prev_code may be used without being properly initialized. You should probably initialize it to "UNKNOWN". Jeff