From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from eggs.gnu.org (eggs.gnu.org [IPv6:2001:470:142:3::10]) by sourceware.org (Postfix) with ESMTPS id 8E6CE3858D33 for ; Thu, 23 Nov 2023 07:31:31 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 8E6CE3858D33 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=loongson.cn Authentication-Results: sourceware.org; spf=fail smtp.mailfrom=loongson.cn ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 8E6CE3858D33 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2001:470:142:3::10 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1700724693; cv=none; b=ZZoMrGPF/wZgxhCGfGCpCQg0FmEROlM1YXtXthpejssNr+jI6bISbtfFTI0+TLpzHuAvNHOjqFYgD3pkMgWiRIoHsqsiB0/Y6ElR/u7Ia5l5fNJnaJTajb3LMSkWPAwLxlNLdJBRlnRyyBR1w5mh6AJAVN4mH/MMQ4369TEiljA= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1700724693; c=relaxed/simple; bh=kzGTwNOugVcIu2tfBUTCceOm7qKlUezUQChtgreevgg=; h=Subject:To:From:Message-ID:Date:MIME-Version; b=O1no+fkTVuLGpVV0/t49PDGqiEewoVQalhnlvZJrnNA7+mni1zWEy4KE4F8bOOM6B7gwfHTBcA4wyIDZWM1/V1fwUMiZMPxZyyDDnCxIGel39ieimmZNRYC7NLHiMjfgZzQPg42MNiQdDrWp0s8Wr7Rips+5TLofoo3FkSG4uk8= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from mail.loongson.cn ([114.242.206.163]) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1r64BM-0005Ht-He for gcc-patches@gcc.gnu.org; Thu, 23 Nov 2023 02:31:31 -0500 Received: from loongson.cn (unknown [10.20.4.107]) by gateway (Coremail) with SMTP id _____8DxqOrE_15lzzY8AA--.18112S3; Thu, 23 Nov 2023 15:31:17 +0800 (CST) Received: from [10.20.4.107] (unknown [10.20.4.107]) by localhost.localdomain (Coremail) with SMTP id AQAAf8Cxri_C_15lX3RKAA--.32213S3; Thu, 23 Nov 2023 15:31:15 +0800 (CST) Subject: Re: [PATCH v3 1/5] LoongArch: Fix usage of LSX and LASX frint/ftint instructions [PR112578] To: Xi Ruoyao , gcc-patches@gcc.gnu.org Cc: i@xen0n.name, xuchenghua@loongson.cn References: <20231120004728.205167-1-xry111@xry111.site> <20231120004728.205167-2-xry111@xry111.site> <2d1c9d59544d15ef7fba07d758431da840cc0bfe.camel@xry111.site> From: chenglulu Message-ID: Date: Thu, 23 Nov 2023 15:31:14 +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: <2d1c9d59544d15ef7fba07d758431da840cc0bfe.camel@xry111.site> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Content-Language: en-US X-CM-TRANSID:AQAAf8Cxri_C_15lX3RKAA--.32213S3 X-CM-SenderInfo: xfkh0wpoxo3qxorr0wxvrqhubq/ X-Coremail-Antispam: 1Uk129KBj93XoW7ZFy3CF4kGr17Zry7GF18tFc_yoW5JFW7pr 4rJa4rCry5Jr10gw10k34UXrWUCFyUJa1UXryUXFZrtry7trn2gr4Y9ryagF1UJrWFqw15 Ar4jq3s5ZryrGrXCm3ZEXasCq-sJn29KB7ZKAUJUUUU5529EdanIXcx71UUUUU7KY7ZEXa sCq-sGcSsGvfJ3Ic02F40EFcxC0VAKzVAqx4xG6I80ebIjqfuFe4nvWSU5nxnvy29KBjDU 0xBIdaVrnRJUUU9ab4IE77IF4wAFF20E14v26r1j6r4UM7CY07I20VC2zVCF04k26cxKx2 IYs7xG6rWj6s0DM7CIcVAFz4kK6r1j6r18M28lY4IEw2IIxxk0rwA2F7IY1VAKz4vEj48v e4kI8wA2z4x0Y4vE2Ix0cI8IcVAFwI0_JFI_Gr1l84ACjcxK6xIIjxv20xvEc7CjxVAFwI 0_Jr0_Gr1l84ACjcxK6I8E87Iv67AKxVW8Jr0_Cr1UM28EF7xvwVC2z280aVCY1x0267AK xVW8Jr0_Cr1UM2AIxVAIcxkEcVAq07x20xvEncxIr21l57IF6xkI12xvs2x26I8E6xACxx 1l5I8CrVACY4xI64kE6c02F40Ex7xfMcIj6xIIjxv20xvE14v26r1Y6r17McIj6I8E87Iv 67AKxVWUJVW8JwAm72CE4IkC6x0Yz7v_Jr0_Gr1lF7xvr2IY64vIr41lc7I2V7IY0VAS07 AlzVAYIcxG8wCF04k20xvY0x0EwIxGrwCFx2IqxVCFs4IE7xkEbVWUJVW8JwCFI7km07C2 67AKxVWUtVW8ZwC20s026c02F40E14v26r1j6r18MI8I3I0E7480Y4vE14v26r106r1rMI 8E67AF67kF1VAFwI0_JF0_Jw1lIxkGc2Ij64vIr41lIxAIcVC0I7IYx2IY67AKxVWUJVWU CwCI42IY6xIIjxv20xvEc7CjxVAFwI0_Jr0_Gr1lIxAIcVCF04k26cxKx2IYs7xG6r1j6r 1xMIIF0xvEx4A2jsIE14v26r1j6r4UMIIF0xvEx4A2jsIEc7CjxVAFwI0_Jr0_GrUvcSsG vfC2KfnxnUUI43ZEXa7IU1QVy3UUUUU== Received-SPF: pass client-ip=114.242.206.163; envelope-from=chenglulu@loongson.cn; helo=mail.loongson.cn X-Spam_score_int: -35 X-Spam_score: -3.6 X-Spam_bar: --- X-Spam_report: (-3.6 / 5.0 requ) BAYES_00=-1.9,NICE_REPLY_A=-1.672,SPF_HELO_NONE=0.001,SPF_PASS=-0.001,T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Status: No, score=-6.8 required=5.0 tests=BAYES_00,BODY_8BITS,KAM_DMARC_STATUS,NICE_REPLY_A,SPF_FAIL,SPF_HELO_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: 在 2023/11/23 下午3:11, Xi Ruoyao 写道: > On Thu, 2023-11-23 at 14:35 +0800, chenglulu wrote: >> Hi, >> >>   I don’t quite understand this part. Is it because define_insn would be >> duplicated with the above implementation, >> >> so define_insn_and_split is used? > Yes, but if you think duplicating the above implementation is better I > can dup it as well (as it's just a single line). > > (I wrote it as a define_expand but it didn't work, then I modified it to > define_insn_and_split). > I just thought it was weird when I was looking at the code. I modified this code to use define_expand:     (define_expand "fix_trunc2"       [(set (match_operand: 0 "register_operand" "=f")             (fix: (match_operand:FVEC 1 "register_operand" "f")))]       ""       {         emit_insn (gen__vftintrz__ (           operands[0], operands[1]));         DONE;       }       [(set_attr "type" "simd_fcvt")        (set_attr "mode" "")]) Here are my test cases:     typedef float __attribute__ ((mode (SF))) float_t;     typedef int __attribute__ ((mode (SI))) int_t;     extern int_t v[4];     int_t     lt_fixdfsi (float_t *x)     {       for (int i=0;i<4;i++)         v[i] = x[i];     } This still achieves the desired effect, generating the following assembly code: lt_fixdfsi: .LFB0 = .     .cfi_startproc     or    $r13,$r4,$r0     # 16    [c=4 l=4]  *movdi_64bit/0     la.global    $r12,v     # 8    [c=4 l=12]  *movdi_64bit/1     vld    $vr0,$r13,0     # 6    [c=12 l=4]  movv4sf_lsx/1     vftintrz.w.s    $vr0,$vr0     # 7    [c=12 l=4] lsx_vftintrz_w_s     vst    $vr0,$r12,0     # 9    [c=4 l=4]  movv4si_lsx/2 So I don't know if I'm getting it right?:-( >>> +(define_insn_and_split "fix_trunc2" >>> +  [(set (match_operand: 0 "register_operand" "=f") >>> + (fix: (match_operand:FVEC 1 "register_operand" "f")))] >>> +  "" >>> +  "#" >>> +  "" >>> +  [(const_int 0)] >>> +  { >>> +    emit_insn (gen__vftintrz__ ( >>> +      operands[0], operands[1])); >>> +    DONE; >>> +  } >>> +  [(set_attr "type" "simd_fcvt") >>> +   (set_attr "mode" "")])