From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pf1-x42d.google.com (mail-pf1-x42d.google.com [IPv6:2607:f8b0:4864:20::42d]) by sourceware.org (Postfix) with ESMTPS id F01F43858D20 for ; Fri, 21 Apr 2023 20:42:36 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org F01F43858D20 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-x42d.google.com with SMTP id d2e1a72fcca58-63b7096e2e4so2324481b3a.2 for ; Fri, 21 Apr 2023 13:42:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1682109756; x=1684701756; 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=B3/0qq9EtWWzcPdVxm5KHUf+DwOMALHfGjYI/z+B5jc=; b=BP+KYqhoZq7uvbtm+/HEBrN6X6BN6hJ7fQHtmJ81S7nVtW7hZMjj1PuE5vC2WKL12p KpsibUpXdPAWP7wbHHbY7qM3ztKyQepAcOSqfFs4lDE4lZJgv89IUuMWcjSp8cHq2ojh OqtW/2XodZ3MrIAjtX4PskuqLP/wvMrSO456wCo6ikaXs3tE/DiSn6qd2JYdToA6lKRh tyN1TtAJF7qcxAP0WnOCfBYhkxbtmqJdnQ4geau4JyQU1d/U3rK0tf+s1NeUrZuyLJTL Okv1apB4RApx47xxJN5ExbwoMj9YUPd/z2hG7eNRrNSs6nflP7MyyYItUDN4P7p+g1rr V11A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1682109756; x=1684701756; 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=B3/0qq9EtWWzcPdVxm5KHUf+DwOMALHfGjYI/z+B5jc=; b=SLXeGj0kv20HIDcRmAlrQKuedv65If4nV3M0gp7RkbfPETSq8gMxqw5iRG4a1DsMsg htxo+rAB7vFLIQx+yVXpCbfwZvphPCd54imuM+qAm9Xgr91ladpl1hh86SYdR6n/aUnR 6zU6FEvSKLC5KWVrU1UJFTIakYbDUySRsaw+wnMUvuns42Mj7defi21EHFNEQzo6OLFT Y2gMYYpNoQiWcyzKxOqXcR5m7g38W1J3WKI/dU9GdiDDrgw4p5a9vhUUL1Vkj2fjrUaP +wDx+gP+7R4BgkTBAIx9Hyy4TixnOn7YbJvqWQbjDZ/IW4FWfBy9Kj6cQjgeP0KIgO+n rPyA== X-Gm-Message-State: AAQBX9fZy2+3O01EogQ/JLXsZo5ETQ0R4VrA+bkPFR8ckf+sbKYD7Av3 rcRlUSmz4p7LA1UeNPLj/j4= X-Google-Smtp-Source: AKy350a0+G7yu2IbeZjV2R7HKbyU2KQsf+gHPy/y1vk9fsQT62qE4+OzG6kmFz5jWeXCoGl9SBXVGw== X-Received: by 2002:a05:6a21:3a82:b0:ef:cb4c:c24c with SMTP id zv2-20020a056a213a8200b000efcb4cc24cmr7832867pzb.23.1682109755940; Fri, 21 Apr 2023 13:42:35 -0700 (PDT) Received: from ?IPV6:2601:681:8600:13d0::99f? ([2601:681:8600:13d0::99f]) by smtp.gmail.com with ESMTPSA id u20-20020aa78494000000b0062bada5db75sm3459268pfn.172.2023.04.21.13.42.34 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 21 Apr 2023 13:42:35 -0700 (PDT) Message-ID: Date: Fri, 21 Apr 2023 14:42:34 -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: [PATCH] RISC-V: Fix redundant vmv1r.v instruction in vmsge.vx codegen Content-Language: en-US To: juzhe.zhong@rivai.ai, gcc-patches@gcc.gnu.org Cc: kito.cheng@gmail.com, palmer@dabbelt.com References: <20230322121556.94496-1-juzhe.zhong@rivai.ai> From: Jeff Law In-Reply-To: <20230322121556.94496-1-juzhe.zhong@rivai.ai> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-4.4 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,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 3/22/23 06:15, juzhe.zhong@rivai.ai wrote: > From: Ju-Zhe Zhong > > Current expansion of vmsge will make RA produce redundant vmv1r.v. > > testcase: > void f1 (void * in, void *out, int32_t x) > { > vbool32_t mask = *(vbool32_t*)in; > asm volatile ("":::"memory"); > vint32m1_t v = __riscv_vle32_v_i32m1 (in, 4); > vint32m1_t v2 = __riscv_vle32_v_i32m1_m (mask, in, 4); > vbool32_t m3 = __riscv_vmsge_vx_i32m1_b32 (v, x, 4); > vbool32_t m4 = __riscv_vmsge_vx_i32m1_b32_mu (mask, m3, v, x, 4); > m4 = __riscv_vmsge_vv_i32m1_b32_m (m4, v2, v2, 4); > __riscv_vsm_v_b32 (out, m4, 4); > } > > Before this patch: > f1: > vsetvli a5,zero,e8,mf4,ta,ma > vlm.v v0,0(a0) > vsetivli zero,4,e32,m1,ta,mu > vle32.v v3,0(a0) > vle32.v v2,0(a0),v0.t > vmslt.vx v1,v3,a2 > vmnot.m v1,v1 > vmslt.vx v1,v3,a2,v0.t > vmxor.mm v1,v1,v0 > vmv1r.v v0,v1 > vmsge.vv v2,v2,v2,v0.t > vsm.v v2,0(a1) > ret > > After this patch: > f1: > vsetvli a5,zero,e8,mf4,ta,ma > vlm.v v0,0(a0) > vsetivli zero,4,e32,m1,ta,mu > vle32.v v3,0(a0) > vle32.v v2,0(a0),v0.t > vmslt.vx v1,v3,a2 > vmnot.m v1,v1 > vmslt.vx v1,v3,a2,v0.t > vmxor.mm v0,v1,v0 > vmsge.vv v2,v2,v2,v0.t > vsm.v v2,0(a1) > ret > > > gcc/ChangeLog: > > * config/riscv/vector.md: Fix redundant vmv1r.v. > > gcc/testsuite/ChangeLog: > > * gcc.target/riscv/rvv/base/binop_vx_constraint-150.c: Adapt assembly check. OK. Please push this to the trunk. jeff