Ai
23 Star 29 Fork 165

src-openEuler/gcc

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
0323-Bugfix-replace-tmp-pattern-split.patch 1.63 KB
一键复制 编辑 原始数据 按行查看 历史
huzife 提交于 2024-12-10 20:00 +08:00 . [Bugfix] Fix bugs in cmlt
From d10807504a7f4e58a7dd1fa245d0ccf16227d222 Mon Sep 17 00:00:00 2001
From: Chernonog Viacheslav <chernonog.vyacheslav@huawei.com>
Date: Wed, 4 Dec 2024 20:07:23 +0800
Subject: [PATCH] [Bugfix] replace tmp pattern split
move split before reload
change split tmp pattern to 3 instructions
---
gcc/config/aarch64/aarch64-simd.md | 19 +++++++++++++------
1 file changed, 13 insertions(+), 6 deletions(-)
diff --git a/gcc/config/aarch64/aarch64-simd.md b/gcc/config/aarch64/aarch64-simd.md
index 04592fc90..fb5e355d0 100644
--- a/gcc/config/aarch64/aarch64-simd.md
+++ b/gcc/config/aarch64/aarch64-simd.md
@@ -6566,18 +6566,25 @@
(match_operand:VDQHSD 1 "register_operand" "w")
(match_operand:VDQHSD 2 "half_size_minus_one_operand"))
(match_operand:VDQHSD 3 "cmlt_arith_mask_operand")))]
- "TARGET_SIMD && flag_cmlt_arith"
+ "TARGET_SIMD && !reload_completed && flag_cmlt_arith"
"#"
- "&& reload_completed"
- [(set (match_operand:<V_INT_EQUIV> 0 "register_operand")
+ "&& true"
+ [(set (match_operand:<V_INT_EQUIV> 0 "register_operand" "=w")
(lshiftrt:<V_INT_EQUIV>
(match_operand:VDQHSD 1 "register_operand")
(match_operand:VDQHSD 2 "half_size_minus_one_operand")))
+ (set (match_operand:<V_INT_EQUIV> 4 "register_operand" "w")
+ (match_operand:VDQHSD 3 "cmlt_arith_mask_operand"))
(set (match_dup 0)
(and:<V_INT_EQUIV>
- (match_dup 0)
- (match_operand:VDQHSD 3 "cmlt_arith_mask_operand")))]
- ""
+ (match_dup 4)
+ (match_dup 0)))]
+ {
+ if (can_create_pseudo_p ())
+ operands[4] = gen_reg_rtx (<V_INT_EQUIV>mode);
+ else
+ FAIL;
+ }
[(set_attr "type" "neon_compare_zero")]
)
--
2.33.0
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/src-openeuler/gcc.git
git@gitee.com:src-openeuler/gcc.git
src-openeuler
gcc
gcc
master

搜索帮助