From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1005) id 5C6603858D35; Fri, 9 Jun 2023 21:06:34 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 5C6603858D35 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1686344794; bh=rv5OLa/JwoaN0PTssFvOjWa0WZXwmhjqZ3Q6vgxfby8=; h=From:To:Subject:Date:From; b=hWr9mT3mmv/2/QJKV+yCjSnJH9yItP5WZw1kfdpNW790r2xPjDxLmD4TqO4NbNRCL Hi8+XXjrQbHiU8XnAyrOYmY6jmotI8QfCzB1lsRHZwCJQwa50nzmKrNiqnWlm97DOr 9bnOSSqoYXnR0gqjF10Be22I2sw0Gxy6aCX+yy6I= 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)] Update ChangeLog.meissner X-Act-Checkin: gcc X-Git-Author: Michael Meissner X-Git-Refname: refs/users/meissner/heads/work122 X-Git-Oldrev: 838ca32dc66c8587ff3730fdb71b07392ed046f6 X-Git-Newrev: 723cf62e83af1327dbf7131dba6afbeb338307ae Message-Id: <20230609210634.5C6603858D35@sourceware.org> Date: Fri, 9 Jun 2023 21:06:34 +0000 (GMT) List-Id: https://gcc.gnu.org/g:723cf62e83af1327dbf7131dba6afbeb338307ae commit 723cf62e83af1327dbf7131dba6afbeb338307ae Author: Michael Meissner Date: Fri Jun 9 17:06:31 2023 -0400 Update ChangeLog.meissner Diff: --- gcc/ChangeLog.meissner | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog.meissner b/gcc/ChangeLog.meissner index 3ba4840234b..6bee719341e 100644 --- a/gcc/ChangeLog.meissner +++ b/gcc/ChangeLog.meissner @@ -15,9 +15,28 @@ There are several problems with the current GCC: SImode as the mode. You need to pass in DImode instead of SImode. This is to allow lwz to be treated differently than lwa. + 3) The rules for automatically setting the prefixed attribute were not + checking that these fused load and compare immediate fusion operations + might have prefixed addresses. + + 4) We should use lwa_operand for lwa instead of ds_form_mem_operand. The + lwa_operand has some additional checks for the lwa instruction. + The fix is to modify genfusion.pl that it sets the "YZ" constraint instead of -"m" for the ld and lwa instructions. And to pass DImode to the -address_is_non_pfx_d_or_x function for lwa. +"m" for the ld and lwa instructions. + +This patch also passes DImode to the address_is_non_pfx_d_or_x function for the +lwa instruction so that it properly cheks for DS form restrictions when +splitting the insn because it won't fuse. + +This patch also modifies the prefixed attribute so that it checks load + compare +immediate instructions for be a load instruction. This means that the +lwa_cmpdi_cr0_SI_clobber_CC_none insn must ask for a DImode scratch register +instead of SImode scratch register and also set the sign_extend attribute. The +code for checking if a load is a lwa expects that the register is DImode, the +memory is SImode, and the sign_extend attribute is set. + +I also added a test case for this condition. 2023-06-08 Michael Meissner @@ -26,11 +45,15 @@ gcc/ * config/rs6000/genfusion.pl (gen_ld_cmpi_p10_one): Fix problems that allowed prefixed lwa to be generated. * config/rs6000/fusion.md: Regenerate. + * config/rs6000/rs6000.md (prefixed attribute): Add support for load + plus compare immediate fused insns. gcc/testsuite/ * g++.target/powerpc/pr105325.C: New test. +==================== Branch work122, patch #5 was reverted ==================== + ==================== Branch work122, patch #4 was reverted ==================== ==================== Branch work122, patch #3 was reverted ====================