diff --git a/0323-Bugfix-replace-tmp-pattern-split.patch b/0323-Bugfix-replace-tmp-pattern-split.patch new file mode 100644 index 0000000000000000000000000000000000000000..2a6d10eb94843f9b2c4f26b45cf4d6be4f976a28 --- /dev/null +++ b/0323-Bugfix-replace-tmp-pattern-split.patch @@ -0,0 +1,50 @@ +From d10807504a7f4e58a7dd1fa245d0ccf16227d222 Mon Sep 17 00:00:00 2001 +From: Chernonog Viacheslav +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: 0 "register_operand") ++ "&& true" ++ [(set (match_operand: 0 "register_operand" "=w") + (lshiftrt: + (match_operand:VDQHSD 1 "register_operand") + (match_operand:VDQHSD 2 "half_size_minus_one_operand"))) ++ (set (match_operand: 4 "register_operand" "w") ++ (match_operand:VDQHSD 3 "cmlt_arith_mask_operand")) + (set (match_dup 0) + (and: +- (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 (mode); ++ else ++ FAIL; ++ } + [(set_attr "type" "neon_compare_zero")] + ) + +-- +2.33.0 + diff --git a/gcc.spec b/gcc.spec index d05220aa7a6ed75caa3da75c363c6b48d468392d..3812ab42dd4506e76a45a036fdbbae386ef5b22e 100644 --- a/gcc.spec +++ b/gcc.spec @@ -2,7 +2,7 @@ %global gcc_major 12 # Note, gcc_release must be integer, if you want to add suffixes to # %%{release}, append them after %%{gcc_release} on Release: line. -%global gcc_release 57 +%global gcc_release 58 %global _unpackaged_files_terminate_build 0 %global _performance_build 1 @@ -428,6 +428,7 @@ Patch319: 0319-CSPGO-fix-bugs-when-using-cspgo.patch Patch320: 0320-if-split-fix-bugs.patch Patch321: 0321-Struct-reorg-Avoid-doing-struct-split-and-reorder_fi.patch Patch322: 0322-Bugfix-Create-POINTER_PLUS_EXPR-for-REFERENCE_TYPE.patch +Patch323: 0323-Bugfix-replace-tmp-pattern-split.patch # Part 1001-1999 %ifarch sw_64 @@ -1536,6 +1537,7 @@ not stable, so plugins must be rebuilt any time GCC is updated. %patch -P320 -p1 %patch -P321 -p1 %patch -P322 -p1 +%patch -P323 -p1 %ifarch sw_64 %patch -P1001 -p1 @@ -4158,6 +4160,12 @@ end %doc rpm.doc/changelogs/libcc1/ChangeLog* %changelog +* Tue Dec 10 2024 huzife <634763349@qq.com> - 12.3.1-58 +- Type:Bugfix +- ID:NA +- SUG:NA +- DESC: Fix bugs in cmlt, replace tmp pattern split. + * Mon Dec 09 2024 liyancheng <412998149@qq.com> - 12.3.1-57 - Type:Bugfix - ID:NA