From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1005) id D8B4E3857415; Tue, 11 Oct 2022 15:58:43 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org D8B4E3857415 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1665503923; bh=a9e5ucvFhqW5oSw0Yw0bRL+UuS9u8qstMVZB0KBgF0Q=; h=From:To:Subject:Date:From; b=BGD8qQidIbiPNxp2HINIVzOcvrhW3PFXSIAVGAVi84lKLUN0JhL2W+lUl7DvAUp0M nCH0tVmlLO+dmbUAisdZDzqfGq8XLUBqUrSu3PTCZcdwUV+kzuwrJ0XuRo6OygzkhE fusobdMsUdtVZoqGr+my6Y1TrLN67V8cJQzb2/hQ= 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/dmf001)] Make %A warn about not using accumulators. X-Act-Checkin: gcc X-Git-Author: Michael Meissner X-Git-Refname: refs/users/meissner/heads/dmf001 X-Git-Oldrev: 0be2cad493553fb6eb8402d837e808c8217d9ff4 X-Git-Newrev: 3065dced0a8167eab5fc10624c704600db2efc65 Message-Id: <20221011155843.D8B4E3857415@sourceware.org> Date: Tue, 11 Oct 2022 15:58:43 +0000 (GMT) List-Id: https://gcc.gnu.org/g:3065dced0a8167eab5fc10624c704600db2efc65 commit 3065dced0a8167eab5fc10624c704600db2efc65 Author: Michael Meissner Date: Tue Oct 11 11:56:13 2022 -0400 Make %A warn about not using accumulators. 2022-10-11 Michael Meissner gcc/ * config/rs6000/rs6000.cc (print_operand): Under -mdmf, for output modifier %A, make sure the argument is an accumulator. Diff: --- gcc/config/rs6000/rs6000.cc | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/gcc/config/rs6000/rs6000.cc b/gcc/config/rs6000/rs6000.cc index 92713407c4f..b3e608dbaa4 100644 --- a/gcc/config/rs6000/rs6000.cc +++ b/gcc/config/rs6000/rs6000.cc @@ -13910,8 +13910,19 @@ print_operand (FILE *file, rtx x, int code) output_operand. */ case 'A': - /* Write the MMA accumulator number associated with VSX register X. */ - if (!REG_P (x) || !FP_REGNO_P (REGNO (x)) || (REGNO (x) % 4) != 0) + /* Write the MMA accumulator number associated with VSX register X. On + DMF systems, only allow DMF accumulators, not accumulators overlapping + with the FPR registers. */ + if (!REG_P (x)) + output_operand_lossage ("invalid %%A value"); + else if (TARGET_DMF) + { + if (DMF_REGNO_P (REGNO (x))) + fprintf (file, "%d", REGNO (x) - FIRST_DMF_REGNO); + else + output_operand_lossage ("%%A operand is not a DMF accumulator"); + } + else if (!FP_REGNO_P (REGNO (x)) || (REGNO (x) % 4) != 0) output_operand_lossage ("invalid %%A value"); else fprintf (file, "%d", (REGNO (x) - FIRST_FPR_REGNO) / 4);