From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-io1-xd29.google.com (mail-io1-xd29.google.com [IPv6:2607:f8b0:4864:20::d29]) by sourceware.org (Postfix) with ESMTPS id 3E73E3858D37 for ; Thu, 9 Nov 2023 16:16:59 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 3E73E3858D37 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 3E73E3858D37 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::d29 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1699546621; cv=none; b=wRSdubPuB70AeD0z//bNBFcet1wQS2LX194kWv+a3eRoz7je5dCXW/vJhr6r3c7Ytye42/3RgvLMueHlfS2U3UO0+Q3N35ASDq2YvoKkinD7ia7ihu53BGHoQjzxUAxnldBunWDyqhL7pkU4PLkYZcJPdWzAAJViKRLEMxJvr+o= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1699546621; c=relaxed/simple; bh=hLd8iahzxv+H9GbRXfC9ksM8kTcLb10W6UEiiUGbQcU=; h=DKIM-Signature:Message-ID:Date:MIME-Version:Subject:To:From; b=GYUNp6+SUNGjigvI3pIFbjaMkb4+K+qXflW7sx6iqdd6aXvjdA0sd/hl3GZMGOCQVMrvJcjw06dBaBhwEShAPRA7HGT3CJB3q/BnA1xzFQI0ZfDN9Xbu+6CnilOV55a+BpBMUxv06E16E60Yv0kEPjHZ5tIN7TMvQvL2T8O+LUg= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-io1-xd29.google.com with SMTP id ca18e2360f4ac-7a683bd610dso35747039f.1 for ; Thu, 09 Nov 2023 08:16:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1699546618; x=1700151418; darn=gcc.gnu.org; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=hOBOgRtsIi3VaXWAgX3c7z6pDrb8EaCqNnZH8ZuBObE=; b=Pltyb/+v6GS0crVH09jB/3nhAlG3o8umBH+HA5WPTVAbhKnelixq8Riol8G/C/m2FJ uwFXnbcbzl1KXB3CUOULQ2l1sA64IptAMJiC71llPn1QaK7iXWMvGWEtzPU80wKKn2lT QI3sCa6jia4Z9itYOJtvS3HwyAftFxXOfHNKKPlA4dfQ6AP7wxokmJAoYzg0xGyG9zKo 7sIb7cCgsdpEOh0laeYhfXLzYrvrozWr8fVaf7srXSGoRxSs2sVfUA5MLOYiMuECILv/ H0s5f8aNAHX29ax/GsRFLsU3NpI8cjG1K1k7Cl63/3Wnhm7srh7ipKfcqShOGTVmIq/S ZKQg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1699546618; x=1700151418; h=content-transfer-encoding:in-reply-to:from:references:cc: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=hOBOgRtsIi3VaXWAgX3c7z6pDrb8EaCqNnZH8ZuBObE=; b=s8FqSQp2g5GVUHYl52qgFD2abGQZvGsxqSlFt9/xN8T3cqmgrkz+xNEuDI73act5RQ 2mVxg5jIz6Xqzmx6CZQ2a58SGC3iWnXPvlAHFOcrMfp5uXaEQMU+WHjsGzuCkEx8Jx0w PFHzNgCLAVFeiUhgG+yaqsqLQUgWeHoQSAaUB3fPD5sVIH9sL2CC1I3cf9033IT+PIUX qhtjI2hzoARcseYzTBayMW16bB6R1EdP8iOw/MsTD46gXjSmweLgvHyCZL4K7l2n+oVh qC/hL5MCAryMUMqYWfqDUrPiYP6A2tPQ7lkoLNjNs586BBLeyKztEtE/E+zYX703Ka2K lkjQ== X-Gm-Message-State: AOJu0Yyz//W1JLqOmZMiSrRdLjqFY+FqCKqtTNLwkuA8iyEUqNHwzjQy p7TBSceQn5/IrqLXZ62OfS0= X-Google-Smtp-Source: AGHT+IE4b3AWQPoRQrnb5t76IlU6EOlM9MokpISgOr7CvF67Zqp03u4ktG66KlBdQafyGW71Zw/C+Q== X-Received: by 2002:a05:6e02:194e:b0:359:cc3e:cad with SMTP id x14-20020a056e02194e00b00359cc3e0cadmr5766900ilu.5.1699546618305; Thu, 09 Nov 2023 08:16:58 -0800 (PST) Received: from [172.31.0.109] ([136.36.130.248]) by smtp.gmail.com with ESMTPSA id t12-20020a92dc0c000000b00359d1a8ce74sm488897iln.40.2023.11.09.08.16.24 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 09 Nov 2023 08:16:35 -0800 (PST) Message-ID: <7b7ad19b-7212-4dca-b58d-5d77f8f10dbe@gmail.com> Date: Thu, 9 Nov 2023 09:16:12 -0700 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v2] DSE: Allow vector type for get_stored_val when read < store Content-Language: en-US To: pan2.li@intel.com, gcc-patches@gcc.gnu.org Cc: juzhe.zhong@rivai.ai, yanzhang.wang@intel.com, kito.cheng@gmail.com, richard.guenther@gmail.com, richard.sandiford@arm.com References: <20231102031423.3751965-1-pan2.li@intel.com> <20231109060858.3067686-1-pan2.li@intel.com> From: Jeff Law In-Reply-To: <20231109060858.3067686-1-pan2.li@intel.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-2.3 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,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 List-Id: On 11/8/23 23:08, pan2.li@intel.com wrote: > From: Pan Li > > Update in v2: > * Move vector type support to get_stored_val. > > Original log: > > This patch would like to allow the vector mode in the > get_stored_val in the DSE. It is valid for the read > rtx if and only if the read bitsize is less than the > stored bitsize. > > Given below example code with > --param=riscv-autovec-preference=fixed-vlmax. > > vuint8m1_t test () { > uint8_t arr[32] = { > 1, 2, 7, 1, 3, 4, 5, 3, 1, 0, 1, 2, 4, 4, 9, 9, > 1, 2, 7, 1, 3, 4, 5, 3, 1, 0, 1, 2, 4, 4, 9, 9, > }; > > return __riscv_vle8_v_u8m1(arr, 32); > } > > Before this patch: > test: > lui a5,%hi(.LANCHOR0) > addi sp,sp,-32 > addi a5,a5,%lo(.LANCHOR0) > li a3,32 > vl2re64.v v2,0(a5) > vsetvli zero,a3,e8,m1,ta,ma > vs2r.v v2,0(sp) <== Unnecessary store to stack > vle8.v v1,0(sp) <== Ditto > vs1r.v v1,0(a0) > addi sp,sp,32 > jr ra > > After this patch: > test: > lui a5,%hi(.LANCHOR0) > addi a5,a5,%lo(.LANCHOR0) > li a4,32 > addi sp,sp,-32 > vsetvli zero,a4,e8,m1,ta,ma > vle8.v v1,0(a5) > vs1r.v v1,0(a0) > addi sp,sp,32 > jr ra > > Below tests are passed within this patch: > > * The x86 bootstrap and regression test. > * The aarch64 regression test. > * The risc-v regression test. > > PR target/111720 > > gcc/ChangeLog: > > * dse.cc (get_stored_val): Allow vector mode if the read > bitsize is less than stored bitsize. > > gcc/testsuite/ChangeLog: > > * gcc.target/riscv/rvv/base/pr111720-0.c: New test. > * gcc.target/riscv/rvv/base/pr111720-1.c: New test. > * gcc.target/riscv/rvv/base/pr111720-10.c: New test. > * gcc.target/riscv/rvv/base/pr111720-2.c: New test. > * gcc.target/riscv/rvv/base/pr111720-3.c: New test. > * gcc.target/riscv/rvv/base/pr111720-4.c: New test. > * gcc.target/riscv/rvv/base/pr111720-5.c: New test. > * gcc.target/riscv/rvv/base/pr111720-6.c: New test. > * gcc.target/riscv/rvv/base/pr111720-7.c: New test. > * gcc.target/riscv/rvv/base/pr111720-8.c: New test. > * gcc.target/riscv/rvv/base/pr111720-9.c: New test. We're always getting the lowpart here AFAICT and it appears that all the right thing should happen if gen_lowpart_common fails (it returns NULL, which bubbles up and is the right return value from get_stored_val if it can't be optimized). Did you want to use known_le so that you'd pick up the case when the two modes are the same size? Or was known_lt the test you really wanted (and if so, why). OK using known_lt, or known_le. If you decide to change to known_le, you'll need to bootstrap & regression test again on x86. jeff