From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pl1-x62a.google.com (mail-pl1-x62a.google.com [IPv6:2607:f8b0:4864:20::62a]) by sourceware.org (Postfix) with ESMTPS id 41F973858C53 for ; Sun, 19 Mar 2023 17:03:07 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 41F973858C53 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-pl1-x62a.google.com with SMTP id w4so2107923plg.9 for ; Sun, 19 Mar 2023 10:03:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1679245386; 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=zbk3rYCxGNpe8zjV2o3X6zKJgGxGcpLZziRhx7leY5E=; b=O7/yRr0NXGcdbrTwwwbA1ctWgiru5TXT2Cu1hZ1trY4X4RsUFuqCuKiApK+QX5wXmA VSIk87AbxZFSpSO9JBX1ZTnbbUgKIMoH5dRDBirbzc8Ijzh7qHZZe/P23q3lVP6hdk4r ansGaH002U7nBq0tvtnv24QqsmP0Vjcn7qAg5HowqL0J427Kjj9toxyERCKIAEjVBg9K 3jd+Yu9oc8Vs/cO5gypv16vhPWu8LSAQrnM5aALKSwC9pCjJrZYrnGuuQ6dc0ji5RPkS o1VhN9TvdCZ6IHj5xG7hC6pwKro0Wlt/j26i6OL3W8IieVFY95Qupvi9TKuG4lffAATN zq6A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679245386; 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=zbk3rYCxGNpe8zjV2o3X6zKJgGxGcpLZziRhx7leY5E=; b=qCwJtHat0sXxJZjnSCwLjmmFa8h9RVJoaDJVjZm09tHz1xgRdPkz6JFS9R9TVIeCxg pqL0trzeXkS/zTITqAM27v8R1+EX5V3l7FE/o89t+RQblZaEuiBJrsN/kn4W2rvjNFqH 1Dv6Fr7pr++kL6NEZ4LKNWhpzDyfdpKSstJBQ3gyuHYcbRcTdjmayKGVUtOTdy+k2s9F jMRO+2gh67Seshxbm6wMrq36Z5KETb80e91syh4m7GRudPEawclcnini1/OlSFjBI23G ar/ammbXohZdfgUwxbFuWlOpOZKWmrn6ewF9DUE+85u7rL7duXVE5eFYffoKG3/3tk6S 9YGw== X-Gm-Message-State: AO0yUKUa6bLZQn72BeKBAs3E0Ts7tRyRLPIJ4zPGZfFq84gqDuDbRiQG RpBD6OfIdctXsg0W2Fkox8E= X-Google-Smtp-Source: AK7set+v7hC4NlHoDHb2N/q4p2dzrVQNEnjsp+71RH9q/aKsM8/ZaDrpetYcXW61iGR3kvC8isXqdQ== X-Received: by 2002:a17:90b:3892:b0:23d:4ffc:43e with SMTP id mu18-20020a17090b389200b0023d4ffc043emr14996354pjb.38.1679245385657; Sun, 19 Mar 2023 10:03:05 -0700 (PDT) Received: from ?IPV6:2601:681:8600:13d0::f0a? ([2601:681:8600:13d0::f0a]) by smtp.gmail.com with ESMTPSA id p36-20020a631e64000000b0050be8e0b94csm4583915pgm.90.2023.03.19.10.03.04 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 19 Mar 2023 10:03:05 -0700 (PDT) Message-ID: <4d7cbf53-ef94-f504-07d7-be51ede40a03@gmail.com> Date: Sun, 19 Mar 2023 11:03:04 -0600 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.8.0 Subject: Re: [PATCH] RISC-V: Fix bugs of ternary integer and floating-point ternary intrinsics. Content-Language: en-US To: juzhe.zhong@rivai.ai, gcc-patches@gcc.gnu.org Cc: kito.cheng@gmail.com References: <20230315063746.166390-1-juzhe.zhong@rivai.ai> From: Jeff Law In-Reply-To: <20230315063746.166390-1-juzhe.zhong@rivai.ai> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-2.4 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,NICE_REPLY_A,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP 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/15/23 00:37, juzhe.zhong@rivai.ai wrote: > From: Ju-Zhe Zhong > > Fix bugs of ternary intrinsic pattern: > > interger: > vnmsac.vv vd, vs1, vs2, vm # vd[i] = -(vs1[i] * vs2[i]) + vd[i] (minus op3 (mult op1 op2)) > vnmsac.vx vd, rs1, vs2, vm # vd[i] = -(x[rs1] * vs2[i]) + vd[i] (minus op3 (mult op1 op2)) > > floating-point: > # FP multiply-accumulate, overwrites addend > vfmacc.vv vd, vs1, vs2, vm # vd[i] = +(vs1[i] * vs2[i]) + vd[i] (plus (mult (op1 op2)) op3) > vfmacc.vf vd, rs1, vs2, vm # vd[i] = +(f[rs1] * vs2[i]) + vd[i] (plus (mult (op1 op2)) op3) > > > # FP negate-(multiply-accumulate), overwrites subtrahend > vfnmacc.vv vd, vs1, vs2, vm # vd[i] = -(vs1[i] * vs2[i]) - vd[i] (minus (neg (mult (op1 op2))) op3)) > vfnmacc.vf vd, rs1, vs2, vm # vd[i] = -(f[rs1] * vs2[i]) - vd[i] (minus (neg (mult (op1 op2)) op3)) > # FP multiply-subtract-accumulator, overwrites subtrahend > vfmsac.vv vd, vs1, vs2, vm # vd[i] = +(vs1[i] * vs2[i]) - vd[i] (minus (mult (op1 op2)) op3) > vfmsac.vf vd, rs1, vs2, vm # vd[i] = +(f[rs1] * vs2[i]) - vd[i] (minus (mult (op1 op2)) op3) > > # FP negate-(multiply-subtract-accumulator), overwrites minuend > vfnmsac.vv vd, vs1, vs2, vm # vd[i] = -(vs1[i] * vs2[i]) + vd[i] (plus (neg:(mult (op1 op2))) op3) > vfnmsac.vf vd, rs1, vs2, vm # vd[i] = -(f[rs1] * vs2[i]) + vd[i] (plus (neg:(mult (op1 op2))) op3) > > gcc/ChangeLog: > > * config/riscv/riscv-vector-builtins-bases.cc: Fix ternary bug. > * config/riscv/vector-iterators.md (nmsac): Ditto. > (nmsub): Ditto. > (msac): Ditto. > (msub): Ditto. > (nmadd): Ditto. > (nmacc): Ditto. > * config/riscv/vector.md (@pred_mul_): Ditto. > (@pred_mul_plus): Ditto. > (*pred_madd): Ditto. > (*pred_macc): Ditto. > (*pred_mul_plus): Ditto. > (@pred_mul_plus_scalar): Ditto. > (*pred_madd_scalar): Ditto. > (*pred_macc_scalar): Ditto. > (*pred_mul_plus_scalar): Ditto. > (*pred_madd_extended_scalar): Ditto. > (*pred_macc_extended_scalar): Ditto. > (*pred_mul_plus_extended_scalar): Ditto. > (@pred_minus_mul): Ditto. > (*pred_): Ditto. > (*pred_nmsub): Ditto. > (*pred_): Ditto. > (*pred_nmsac): Ditto. > (*pred_mul_): Ditto. > (*pred_minus_mul): Ditto. > (@pred_mul__scalar): Ditto. > (@pred_minus_mul_scalar): Ditto. > (*pred__scalar): Ditto. > (*pred_nmsub_scalar): Ditto. > (*pred__scalar): Ditto. > (*pred_nmsac_scalar): Ditto. > (*pred_mul__scalar): Ditto. > (*pred_minus_mul_scalar): Ditto. > (*pred__extended_scalar): Ditto. > (*pred_nmsub_extended_scalar): Ditto. > (*pred__extended_scalar): Ditto. > (*pred_nmsac_extended_scalar): Ditto. > (*pred_mul__extended_scalar): Ditto. > (*pred_minus_mul_extended_scalar): Ditto. > (*pred_): Ditto. > (*pred_): Ditto. > (*pred__scalar): Ditto. > (*pred__scalar): Ditto. > (@pred_neg_mul_): Ditto. > (@pred_mul_neg_): Ditto. > (*pred_): Ditto. > (*pred_): Ditto. > (*pred_): Ditto. > (*pred_): Ditto. > (*pred_neg_mul_): Ditto. > (*pred_mul_neg_): Ditto. > (@pred_neg_mul__scalar): Ditto. > (@pred_mul_neg__scalar): Ditto. > (*pred__scalar): Ditto. > (*pred__scalar): Ditto. > (*pred__scalar): Ditto. > (*pred__scalar): Ditto. > (*pred_neg_mul__scalar): Ditto. > (*pred_mul_neg__scalar): Ditto. > (@pred_widen_neg_mul_): Ditto. > (@pred_widen_mul_neg_): Ditto. > (@pred_widen_neg_mul__scalar): Ditto. > (@pred_widen_mul_neg__scalar): Ditto. It looks like you've got two patches that are almost 100% identical except for a few bits in vector.md. Which is the correct version? One is dated 3/14/23 00:30 the other 3/15/23: 04:07. jeff