From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.loongson.cn (mail.loongson.cn [114.242.206.163]) by sourceware.org (Postfix) with ESMTP id C350F3858C60 for ; Fri, 15 Mar 2024 01:10:27 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org C350F3858C60 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=loongson.cn Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=loongson.cn ARC-Filter: OpenARC Filter v1.0.0 sourceware.org C350F3858C60 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=114.242.206.163 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1710465031; cv=none; b=aORxWKpcsI44waKx0sQt2dmvwc5qDa1ALtQRi+qm1XaP4FdmY/r/elp2IlFDQqapQ+ApadA64MbfvCNdW52Fc3HApw0BHDSTzfEoAzqDg8HtNb6EpWn/ew7KL97m1ke+OD5poPbCc8XAqSIDVOQLwoiS2awBKCY9u8Ny86PujIg= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1710465031; c=relaxed/simple; bh=Ask9Szs+81qSwWQqY2JXakV/7RTQzzoXaHcMq5lFOUs=; h=Subject:To:From:Message-ID:Date:MIME-Version; b=ocVj/J68vGqANOm2omAtbTwysn4AjKmYUVA2LGH03wB/y8SDv9gGz5p1Uyc6ynGPTJSrUPZL28+sleGvCjH0eoqZyG+xHaMAIHaSAtdUt/eGiWkchIfSJ0MIPfxvuchl9qmT7MIGwB2mLx0azgljw+33HSkvp6Nc5GerGCMqR5U= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from loongson.cn (unknown [10.20.4.107]) by gateway (Coremail) with SMTP id _____8BxHOv_n_NljUwZAA--.51194S3; Fri, 15 Mar 2024 09:10:24 +0800 (CST) Received: from [10.20.4.107] (unknown [10.20.4.107]) by localhost.localdomain (Coremail) with SMTP id AQAAf8BxHBP9n_NlFJZaAA--.41883S3; Fri, 15 Mar 2024 09:10:22 +0800 (CST) Subject: Re:[pushed] [PATCH v2] LoongArch: Remove masking process for operand 3 of xvpermi.q. To: Chenghui Pan , gcc-patches@gcc.gnu.org Cc: xry111@xry111.site, i@xen0n.name, xuchenghua@loongson.cn References: <20240314012654.3435904-1-panchenghui@loongson.cn> From: chenglulu Message-ID: <636d9134-534a-a41d-b045-ba1a7bd3a002@loongson.cn> Date: Fri, 15 Mar 2024 09:10:21 +0800 User-Agent: Mozilla/5.0 (X11; Linux loongarch64; rv:68.0) Gecko/20100101 Thunderbird/68.7.0 MIME-Version: 1.0 In-Reply-To: <20240314012654.3435904-1-panchenghui@loongson.cn> Content-Type: text/plain; charset=gbk; format=flowed Content-Transfer-Encoding: 8bit Content-Language: en-US X-CM-TRANSID:AQAAf8BxHBP9n_NlFJZaAA--.41883S3 X-CM-SenderInfo: xfkh0wpoxo3qxorr0wxvrqhubq/ X-Coremail-Antispam: 1Uk129KBj93XoWxWFW8ZF1kAr48WF4xJFWxZrc_yoW5KFW8pr 1UuF1Skw4IkFykK34Dtayagr4UArsFka47WF42k3srC3ZIgF1jqF1SyrZFyw1DJayjqw17 XF4rZw10qF1UCwcCm3ZEXasCq-sJn29KB7ZKAUJUUUU5529EdanIXcx71UUUUU7KY7ZEXa sCq-sGcSsGvfJ3Ic02F40EFcxC0VAKzVAqx4xG6I80ebIjqfuFe4nvWSU5nxnvy29KBjDU 0xBIdaVrnRJUUUv0b4IE77IF4wAFF20E14v26r1j6r4UM7CY07I20VC2zVCF04k26cxKx2 IYs7xG6rWj6s0DM7CIcVAFz4kK6r106r15M28lY4IEw2IIxxk0rwA2F7IY1VAKz4vEj48v e4kI8wA2z4x0Y4vE2Ix0cI8IcVAFwI0_JFI_Gr1l84ACjcxK6xIIjxv20xvEc7CjxVAFwI 0_Gr0_Cr1l84ACjcxK6I8E87Iv67AKxVW8JVWxJwA2z4x0Y4vEx4A2jsIEc7CjxVAFwI0_ Gr0_Gr1UM2AIxVAIcxkEcVAq07x20xvEncxIr21l57IF6xkI12xvs2x26I8E6xACxx1l5I 8CrVACY4xI64kE6c02F40Ex7xfMcIj6xIIjxv20xvE14v26r1Y6r17McIj6I8E87Iv67AK xVWUJVW8JwAm72CE4IkC6x0Yz7v_Jr0_Gr1lF7xvr2IY64vIr41lc7I2V7IY0VAS07AlzV AYIcxG8wCF04k20xvY0x0EwIxGrwCFx2IqxVCFs4IE7xkEbVWUJVW8JwC20s026c02F40E 14v26r1j6r18MI8I3I0E7480Y4vE14v26r106r1rMI8E67AF67kF1VAFwI0_JF0_Jw1lIx kGc2Ij64vIr41lIxAIcVC0I7IYx2IY67AKxVWUJVWUCwCI42IY6xIIjxv20xvEc7CjxVAF wI0_Jr0_Gr1lIxAIcVCF04k26cxKx2IYs7xG6r1j6r1xMIIF0xvEx4A2jsIE14v26r1j6r 4UMIIF0xvEx4A2jsIEc7CjxVAFwI0_Jr0_GrUvcSsGvfC2KfnxnUUI43ZEXa7IU8r9N3UU UUU== X-Spam-Status: No, score=-11.3 required=5.0 tests=BAYES_00,GIT_PATCH_0,KAM_DMARC_STATUS,KAM_SHORT,MIME_CHARSET_FARAWAY,NICE_REPLY_A,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: Pushed to r14-9486. ÔÚ 2024/3/14 ÉÏÎç9:26, Chenghui Pan дµÀ: > The behavior of non-zero unused bits in xvpermi.q instruction's > third operand is undefined on LoongArch, according to our > discussion (https://github.com/llvm/llvm-project/pull/83540), > we think that keeping original insn operand as unmodified > state is better solution. > > This patch partially reverts 7b158e036a95b1ab40793dd53bed7dbd770ffdaf. > > gcc/ChangeLog: > > * config/loongarch/lasx.md (lasx_xvpermi_q_): > Remove masking of operand 3. > > gcc/testsuite/ChangeLog: > > * gcc.target/loongarch/vector/lasx/lasx-xvpermi_q.c: > Reposition operand 3's value into instruction's defined accept range. > --- > gcc/config/loongarch/lasx.md | 5 ----- > .../gcc.target/loongarch/vector/lasx/lasx-xvpermi_q.c | 6 +++--- > 2 files changed, 3 insertions(+), 8 deletions(-) > > diff --git a/gcc/config/loongarch/lasx.md b/gcc/config/loongarch/lasx.md > index ac84db7f0ce..3f25c0c1756 100644 > --- a/gcc/config/loongarch/lasx.md > +++ b/gcc/config/loongarch/lasx.md > @@ -640,8 +640,6 @@ (define_insn "lasx_xvpermi_d__1" > (set_attr "mode" "")]) > > ;; xvpermi.q > -;; Unused bits in operands[3] need be set to 0 to avoid > -;; causing undefined behavior on LA464. > (define_insn "lasx_xvpermi_q_" > [(set (match_operand:LASX 0 "register_operand" "=f") > (unspec:LASX > @@ -651,9 +649,6 @@ (define_insn "lasx_xvpermi_q_" > UNSPEC_LASX_XVPERMI_Q))] > "ISA_HAS_LASX" > { > - int mask = 0x33; > - mask &= INTVAL (operands[3]); > - operands[3] = GEN_INT (mask); > return "xvpermi.q\t%u0,%u2,%3"; > } > [(set_attr "type" "simd_splat") > diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvpermi_q.c b/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvpermi_q.c > index dbc29d2fb22..f89dfc31120 100644 > --- a/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvpermi_q.c > +++ b/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvpermi_q.c > @@ -27,7 +27,7 @@ main () > *((unsigned long*)& __m256i_result[2]) = 0x7fff7fff7fff0000; > *((unsigned long*)& __m256i_result[1]) = 0x7fe37fe3001d001d; > *((unsigned long*)& __m256i_result[0]) = 0x7fff7fff7fff0000; > - __m256i_out = __lasx_xvpermi_q (__m256i_op0, __m256i_op1, 0x2a); > + __m256i_out = __lasx_xvpermi_q (__m256i_op0, __m256i_op1, 0x22); > ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); > > *((unsigned long*)& __m256i_op0[3]) = 0x0000000000000000; > @@ -42,7 +42,7 @@ main () > *((unsigned long*)& __m256i_result[2]) = 0x000000000019001c; > *((unsigned long*)& __m256i_result[1]) = 0x0000000000000000; > *((unsigned long*)& __m256i_result[0]) = 0x00000000000001fe; > - __m256i_out = __lasx_xvpermi_q (__m256i_op0, __m256i_op1, 0xb9); > + __m256i_out = __lasx_xvpermi_q (__m256i_op0, __m256i_op1, 0x31); > ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); > > *((unsigned long*)& __m256i_op0[3]) = 0x00ff00ff00ff00ff; > @@ -57,7 +57,7 @@ main () > *((unsigned long*)& __m256i_result[2]) = 0xffff0000ffff0000; > *((unsigned long*)& __m256i_result[1]) = 0x00ff00ff00ff00ff; > *((unsigned long*)& __m256i_result[0]) = 0x00ff00ff00ff00ff; > - __m256i_out = __lasx_xvpermi_q (__m256i_op0, __m256i_op1, 0xca); > + __m256i_out = __lasx_xvpermi_q (__m256i_op0, __m256i_op1, 0x02); > ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); > > return 0;