From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1005) id 2A39F3858D35; Fri, 9 Jun 2023 22:07:58 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 2A39F3858D35 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1686348478; bh=o/HC6NzZMOu+RHLwqVtrW1H7cd2lYiWu9+iHEJIXwQM=; h=From:To:Subject:Date:From; b=ni5deEusWyezXwRPNrEj0hwjt4lc47hib4Ix1kykyc8FoxZI6BzCZkg4lVkEPca1k 2xLnVvCBLo9x/5Cd7QK1gh/gDaEZ+uw43rOM52MLmmO/+ou3DZ7ZkzqVGWH16XyceG tS9sFA7KBj9PCwa6F7MSTfMsu5dUOg6DUWgF1Y4I= Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Michael Meissner To: gcc-cvs@gcc.gnu.org Subject: [gcc(refs/users/meissner/heads/work122)] Revert patches X-Act-Checkin: gcc X-Git-Author: Michael Meissner X-Git-Refname: refs/users/meissner/heads/work122 X-Git-Oldrev: 723cf62e83af1327dbf7131dba6afbeb338307ae X-Git-Newrev: c65e758acd515db117a7bc53f14588d4c8df5a2d Message-Id: <20230609220758.2A39F3858D35@sourceware.org> Date: Fri, 9 Jun 2023 22:07:58 +0000 (GMT) List-Id: https://gcc.gnu.org/g:c65e758acd515db117a7bc53f14588d4c8df5a2d commit c65e758acd515db117a7bc53f14588d4c8df5a2d Author: Michael Meissner Date: Fri Jun 9 18:07:54 2023 -0400 Revert patches Diff: --- gcc/config/rs6000/fusion.md | 39 +++++++++++++---------------- gcc/config/rs6000/genfusion.pl | 26 +++---------------- gcc/config/rs6000/rs6000.md | 2 +- gcc/testsuite/g++.target/powerpc/pr105325.C | 26 ------------------- 4 files changed, 22 insertions(+), 71 deletions(-) diff --git a/gcc/config/rs6000/fusion.md b/gcc/config/rs6000/fusion.md index be1f6384c5d..d45fb138a70 100644 --- a/gcc/config/rs6000/fusion.md +++ b/gcc/config/rs6000/fusion.md @@ -22,7 +22,7 @@ ;; load mode is DI result mode is clobber compare mode is CC extend is none (define_insn_and_split "*ld_cmpdi_cr0_DI_clobber_CC_none" [(set (match_operand:CC 2 "cc_reg_operand" "=x") - (compare:CC (match_operand:DI 1 "ds_form_mem_operand" "YZ") + (compare:CC (match_operand:DI 1 "ds_form_mem_operand" "m") (match_operand:DI 3 "const_m1_to_1_operand" "n"))) (clobber (match_scratch:DI 0 "=r"))] "(TARGET_P10_FUSION)" @@ -43,7 +43,7 @@ ;; load mode is DI result mode is clobber compare mode is CCUNS extend is none (define_insn_and_split "*ld_cmpldi_cr0_DI_clobber_CCUNS_none" [(set (match_operand:CCUNS 2 "cc_reg_operand" "=x") - (compare:CCUNS (match_operand:DI 1 "ds_form_mem_operand" "YZ") + (compare:CCUNS (match_operand:DI 1 "ds_form_mem_operand" "m") (match_operand:DI 3 "const_0_to_1_operand" "n"))) (clobber (match_scratch:DI 0 "=r"))] "(TARGET_P10_FUSION)" @@ -64,7 +64,7 @@ ;; load mode is DI result mode is DI compare mode is CC extend is none (define_insn_and_split "*ld_cmpdi_cr0_DI_DI_CC_none" [(set (match_operand:CC 2 "cc_reg_operand" "=x") - (compare:CC (match_operand:DI 1 "ds_form_mem_operand" "YZ") + (compare:CC (match_operand:DI 1 "ds_form_mem_operand" "m") (match_operand:DI 3 "const_m1_to_1_operand" "n"))) (set (match_operand:DI 0 "gpc_reg_operand" "=r") (match_dup 1))] "(TARGET_P10_FUSION)" @@ -85,7 +85,7 @@ ;; load mode is DI result mode is DI compare mode is CCUNS extend is none (define_insn_and_split "*ld_cmpldi_cr0_DI_DI_CCUNS_none" [(set (match_operand:CCUNS 2 "cc_reg_operand" "=x") - (compare:CCUNS (match_operand:DI 1 "ds_form_mem_operand" "YZ") + (compare:CCUNS (match_operand:DI 1 "ds_form_mem_operand" "m") (match_operand:DI 3 "const_0_to_1_operand" "n"))) (set (match_operand:DI 0 "gpc_reg_operand" "=r") (match_dup 1))] "(TARGET_P10_FUSION)" @@ -103,25 +103,24 @@ (set_attr "length" "8")]) ;; load-cmpi fusion pattern generated by gen_ld_cmpi_p10 -;; load mode is SI result mode is clobber compare mode is CC extend is sign -(define_insn_and_split "*lwa_cmpdi_cr0_SI_clobber_CC_sign" +;; load mode is SI result mode is clobber compare mode is CC extend is none +(define_insn_and_split "*lwa_cmpdi_cr0_SI_clobber_CC_none" [(set (match_operand:CC 2 "cc_reg_operand" "=x") - (compare:CC (match_operand:SI 1 "lwa_operand" "YZ") + (compare:CC (match_operand:SI 1 "ds_form_mem_operand" "m") (match_operand:SI 3 "const_m1_to_1_operand" "n"))) - (clobber (match_scratch:DI 0 "=r"))] + (clobber (match_scratch:SI 0 "=r"))] "(TARGET_P10_FUSION)" "lwa%X1 %0,%1\;cmpdi %2,%0,%3" "&& reload_completed && (cc_reg_not_cr0_operand (operands[2], CCmode) || !address_is_non_pfx_d_or_x (XEXP (operands[1], 0), - DImode, NON_PREFIXED_DS))" - [(set (match_dup 0) (sign_extend:DI (match_dup 1))) + SImode, NON_PREFIXED_DS))" + [(set (match_dup 0) (match_dup 1)) (set (match_dup 2) (compare:CC (match_dup 0) (match_dup 3)))] "" [(set_attr "type" "fused_load_cmpi") (set_attr "cost" "8") - (set_attr "sign_extend" "yes") (set_attr "length" "8")]) ;; load-cmpi fusion pattern generated by gen_ld_cmpi_p10 @@ -146,10 +145,10 @@ (set_attr "length" "8")]) ;; load-cmpi fusion pattern generated by gen_ld_cmpi_p10 -;; load mode is SI result mode is SI compare mode is CC extend is sign -(define_insn_and_split "*lwa_cmpdi_cr0_SI_SI_CC_sign" +;; load mode is SI result mode is SI compare mode is CC extend is none +(define_insn_and_split "*lwa_cmpdi_cr0_SI_SI_CC_none" [(set (match_operand:CC 2 "cc_reg_operand" "=x") - (compare:CC (match_operand:SI 1 "lwa_operand" "YZ") + (compare:CC (match_operand:SI 1 "ds_form_mem_operand" "m") (match_operand:SI 3 "const_m1_to_1_operand" "n"))) (set (match_operand:SI 0 "gpc_reg_operand" "=r") (match_dup 1))] "(TARGET_P10_FUSION)" @@ -157,14 +156,13 @@ "&& reload_completed && (cc_reg_not_cr0_operand (operands[2], CCmode) || !address_is_non_pfx_d_or_x (XEXP (operands[1], 0), - DImode, NON_PREFIXED_DS))" - [(set (match_dup 0) (sign_extend:SI (match_dup 1))) + SImode, NON_PREFIXED_DS))" + [(set (match_dup 0) (match_dup 1)) (set (match_dup 2) (compare:CC (match_dup 0) (match_dup 3)))] "" [(set_attr "type" "fused_load_cmpi") (set_attr "cost" "8") - (set_attr "sign_extend" "yes") (set_attr "length" "8")]) ;; load-cmpi fusion pattern generated by gen_ld_cmpi_p10 @@ -192,7 +190,7 @@ ;; load mode is SI result mode is EXTSI compare mode is CC extend is sign (define_insn_and_split "*lwa_cmpdi_cr0_SI_EXTSI_CC_sign" [(set (match_operand:CC 2 "cc_reg_operand" "=x") - (compare:CC (match_operand:SI 1 "lwa_operand" "YZ") + (compare:CC (match_operand:SI 1 "ds_form_mem_operand" "m") (match_operand:SI 3 "const_m1_to_1_operand" "n"))) (set (match_operand:EXTSI 0 "gpc_reg_operand" "=r") (sign_extend:EXTSI (match_dup 1)))] "(TARGET_P10_FUSION)" @@ -200,14 +198,13 @@ "&& reload_completed && (cc_reg_not_cr0_operand (operands[2], CCmode) || !address_is_non_pfx_d_or_x (XEXP (operands[1], 0), - DImode, NON_PREFIXED_DS))" + SImode, NON_PREFIXED_DS))" [(set (match_dup 0) (sign_extend:EXTSI (match_dup 1))) (set (match_dup 2) (compare:CC (match_dup 0) (match_dup 3)))] "" [(set_attr "type" "fused_load_cmpi") (set_attr "cost" "8") - (set_attr "sign_extend" "yes") (set_attr "length" "8")]) ;; load-cmpi fusion pattern generated by gen_ld_cmpi_p10 @@ -250,7 +247,6 @@ "" [(set_attr "type" "fused_load_cmpi") (set_attr "cost" "8") - (set_attr "sign_extend" "yes") (set_attr "length" "8")]) ;; load-cmpi fusion pattern generated by gen_ld_cmpi_p10 @@ -293,7 +289,6 @@ "" [(set_attr "type" "fused_load_cmpi") (set_attr "cost" "8") - (set_attr "sign_extend" "yes") (set_attr "length" "8")]) ;; load-cmpi fusion pattern generated by gen_ld_cmpi_p10 diff --git a/gcc/config/rs6000/genfusion.pl b/gcc/config/rs6000/genfusion.pl index 7016f9c7512..82e8f863b02 100755 --- a/gcc/config/rs6000/genfusion.pl +++ b/gcc/config/rs6000/genfusion.pl @@ -59,17 +59,12 @@ sub gen_ld_cmpi_p10_one my $np = "NON_PREFIXED_D"; my $mempred = "non_update_memory_operand"; - my $lmode_prefix_call = $lmode; my $extend; if ($ccmode eq "CC") { - # ld and lwa are both DS-FORM. lwa needs to pass DImode to - # address_is_non_pfx_d_or_x so that it is properly treated as a DS mode - # instruction. + # ld and lwa are both DS-FORM. ($lmode =~ /^[SD]I$/) and $np = "NON_PREFIXED_DS"; - ($lmode eq "DI") and $mempred = "ds_form_mem_operand"; - ($lmode eq "SI") and $mempred = "lwa_operand"; - ($lmode eq "SI") and $lmode_prefix_call = "DI"; + ($lmode =~ /^[SD]I$/) and $mempred = "ds_form_mem_operand"; } else { if ($lmode eq "DI") { # ld is DS-form, but lwz is not. @@ -86,28 +81,22 @@ sub gen_ld_cmpi_p10_one # For clobber, we need a SI/DI reg in case we # split because we have to sign/zero extend. - # for lwa, we need a DImode temporary to properly signal that - # lwa is a ds-form instruction. my $clobbermode = ($lmode =~ /^[QH]I$/) ? "GPR" : $lmode; if ($result =~ /^EXT/ || $result eq "GPR" || $clobbermode eq "GPR") { # We always need extension if result > lmode. $extend = ($ccmode eq "CC") ? "sign" : "zero"; - } elsif ($ccmode eq "CC" && $lmode eq "SI") { - $clobbermode = "DI"; - $extend = "sign"; } else { # Result of SI/DI does not need sign extension. $extend = "none"; } my $ldst = mode_to_ldst_char($lmode); - my $constraint = ($np eq "NON_PREFIXED_DS") ? "YZ" : "m"; print <