From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2137.outbound.protection.outlook.com [40.107.94.137]) by sourceware.org (Postfix) with ESMTPS id 336B43848019 for ; Thu, 20 May 2021 07:46:21 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 336B43848019 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=wavecomp.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=fshahbazker@wavecomp.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=OgIEOtp4XDHXyW/oqz+82ET5tUXTtxtH8LYXJH8f+wYrtkklkVCpDQzDGU0DLfgLOhzeshiIlUVaJsKWoWQ7MdoUxnM89pNC8KW3LSWbd6xYwJpWoKEkt1v9C4W/LP8NemMyerrvArURd6s/o4tAm9TaqLUpXRlEuUuPIcWDOyxMwgLR5VcqGzV4KsuLa/68PrcIf+DtYb93gluPsAwUJJcDZ6BeMV+Dw3Zt4Uzd/JXyoUJqO0dFJ3+8MH/thsMsNkl+dgPEhYrW52vobf4f7ixm2yziKgYXwxArxUjw4Q9mA+d4UEvMqTkGm5WRp52V3S5N/tzt7C7fEvqNiq1BLg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=eDQtHoKUqvfkq34YAONpKNieUpLppIViiYnt+4dfYsw=; b=MwBCSYGtsMNElsAbMh2EDko1i5unj3fhovDiGuWqngnbiJFTz+Nw9c9l/7u8VI0co6uqTCKRJc3m1BpxJvnP5vayyVbSIMKSNyg0uJIsygO6IieHkne427jb9FrN153vVfK88F+aI/r2uzpzOUCDIsmtXpj+KGAQqHs92b3BturEl5kH+we+9fs104HUUUI6GCvwlSrBz26KVPPBhCftVkC08OlAUiOlGGisiPfXqoSQN7OlSIK8rL9i9lsbIijxd7uutk6m1H4de/RbsL3UaLF8ENhEfu+2plt2rkm+DFD8zSymQRc7sEStdcRXpgX/8SIOQJjFvBSn1dgCp7MLOg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=wavecomp.com; dmarc=pass action=none header.from=wavecomp.com; dkim=pass header.d=wavecomp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=wavecomp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=eDQtHoKUqvfkq34YAONpKNieUpLppIViiYnt+4dfYsw=; b=Bf/U8L6WMWNBe+zksU0V0RzqkcGbCu4AwmYdX24gObnB0NpnNAnIM8R/4SDGHY3Vty7WNj7DJxOaUhzzz9sSUr3cRSyel4jKkwMuRmp60Hh8qBHDScsIqcLpkQ0gtZ3IcImqbjwAXalNfIhuvpuYEll66DZMcI98SMO+hLx3p3I= Authentication-Results: sourceware.org; dkim=none (message not signed) header.d=none;sourceware.org; dmarc=none action=none header.from=wavecomp.com; Received: from MW3PR22MB2299.namprd22.prod.outlook.com (2603:10b6:303:47::10) by MWHPR2201MB1344.namprd22.prod.outlook.com (2603:10b6:301:25::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4129.28; Thu, 20 May 2021 07:46:15 +0000 Received: from MW3PR22MB2299.namprd22.prod.outlook.com ([fe80::e098:7822:150b:bb5b]) by MW3PR22MB2299.namprd22.prod.outlook.com ([fe80::e098:7822:150b:bb5b%6]) with mapi id 15.20.4129.034; Thu, 20 May 2021 07:46:15 +0000 From: Faraz Shahbazker To: gdb-patches@sourceware.org, Mike Frysinger Cc: "Maciej W . Rozycki" , Chao-ying Fu , Faraz Shahbazker Subject: [PATCH 2/5] sim: Factor out NaN handling in floating point operations Date: Thu, 20 May 2021 13:15:51 +0530 Message-Id: <20210520074554.1465327-3-fshahbazker@wavecomp.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210520074554.1465327-1-fshahbazker@wavecomp.com> References: <20210520074554.1465327-1-fshahbazker@wavecomp.com> Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline Content-Transfer-Encoding: quoted-printable X-Originating-IP: [123.201.194.96] X-ClientProxiedBy: PN2PR01CA0088.INDPRD01.PROD.OUTLOOK.COM (2603:1096:c01:23::33) To MW3PR22MB2299.namprd22.prod.outlook.com (2603:10b6:303:47::10) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from localhost.localdomain (123.201.194.96) by PN2PR01CA0088.INDPRD01.PROD.OUTLOOK.COM (2603:1096:c01:23::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4129.25 via Frontend Transport; Thu, 20 May 2021 07:46:12 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 2b02198d-72dc-4f15-19ae-08d91b63585a X-MS-TrafficTypeDiagnostic: MWHPR2201MB1344: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1751; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 6yEE1PLjf+qkeON5EQVE7vScTbXS3IMdBFOOeLZ0H3H9IZpCH7zDqYlg/m90wa3NOWDNDv3GZkD8w0VdyCvLsCZ81JpR9/i6mBu+8yZbJ3rTQ2LTTgQYKg++/iVEkn6VvMcr7FtNQzoLb2BwKE+usJGRFwzPYVDq9+01aS2ishPwp4vd9e2cDesJcZDqp3pUhRBymmoBmOXnzXNP3okpNn2UqlR6IHWMRhG/BCMp6MUeIDU6gKHy4UlMSzd+zZDA35kUl9hbnXhSjk9/L43xoQ04/JRTN5aTUcgowemQccx2t+I3VNs5dc9972GL1rzgXCPKm44Ts0EmPk9qpZgY8f6Z4O19kwb5kO0sas+Tkf6ebc4YRcN2bqZZY3OxLydmwfJLr/DM0KlsjYoaL1sdXpUTTIZG77yDPfJWZTQ3B+OQRZ4GJ/7/29jWojcS+poDm+9qXkCe2DhGhR/uQmFSpcTh5Lkpg/xWLFs2ykkv+JBIMdsh9g5ox4VBx6BksmUjqPonERdYktr1qbhH4nCEA4hWDWGkZORoJPrfxv+HteWXxp3B7K2hnLhfS8f15CHcs8d9xjsBEA7pGF819MpK8mzgJS3o3Wuc5GAxB+b+HD7FL5CcpoPEbOTZmXskGjq68wGzU9a54rFIntmgF8UTNQ== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MW3PR22MB2299.namprd22.prod.outlook.com; PTR:; CAT:NONE; SFS:(346002)(376002)(366004)(39830400003)(136003)(396003)(8936002)(107886003)(2906002)(26005)(8676002)(6512007)(36756003)(38100700002)(1076003)(38350700002)(16526019)(186003)(66946007)(6666004)(478600001)(54906003)(316002)(6506007)(83380400001)(6916009)(66476007)(66556008)(6486002)(956004)(4326008)(2616005)(5660300002)(86362001)(52116002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?q6nRKHxnvP095rBgaVvaLehDFSA3tExzoEO2T4WmZQEbZHJgQ0AdOTlIkGp/?= =?us-ascii?Q?uVi5og2ONk7Z39PyDjTHhQHsm0AZwm5wbA1UDBQfDJkZRDagaZj0/UyfdJBO?= =?us-ascii?Q?bGDYmhEZs4IoTK6aJh9ynjyk63Z33ShpP3qtPusEgk5ZS32egAuk5dzb+m6W?= =?us-ascii?Q?9o96ZYzrdClrP3lrHkAlwpeWOEDormHT6PF9JypZtw2YaV4qgKGstOGWofF/?= =?us-ascii?Q?7WadSw+HDRvV0KL+GrCoT5LMP8EegmWTtaFDfhfY3lTO/Bcw6GqrL3mKKPkO?= =?us-ascii?Q?ixCwkTogYVf1BxACMxGhnWH+vOJwLd85URBE7XWZF3kcUEK+TKIlQYfO1bQw?= =?us-ascii?Q?Ka0h5id6fOGc9o74x4Q2JXHYeFL2+k6o9u3hHmZ4ZrxucMEkzsazBNB/ukK0?= =?us-ascii?Q?6YR/49hZ6ivRzheILWiRZS1Lzuj3kXIHhIMPmnqOp7dtiwthWGSCR+oFdvbB?= =?us-ascii?Q?8SjAMk0QGA17fFl3hlxobiU99oXVExnwG0ds5v/hxcpz0sQCUpPcgT3fK+eG?= =?us-ascii?Q?1uQyuOR8PPSetrjDQ2VN2HDc9wHbKjC1sTbYO4bnwteGXgNDgsn7RInmYGN4?= =?us-ascii?Q?xm18tN6X7sn4GWAnLDmQvMLLeDLlVaUALJsXgSa2jULKTT2qGeFXwWP6QQya?= =?us-ascii?Q?Fqk92bY4n2ZMN0yMP5P7PeSrzabfofeuJRa+n/Ax4mkfeOwRRraq+5UFYtnm?= =?us-ascii?Q?VRcsqJB+dfEkmmFSNBFxdHLuMG3iYIMJM9nKUavpTBtGLO5zgKcSvXR1Y9n1?= =?us-ascii?Q?fTDrpqE7lFPoGp6hcuR5VL5u+udvj7jivN0CQK5WUrBl0rPlTphnSfdgxjRT?= =?us-ascii?Q?2q6IHGLpODXebllLQl5GRNRIcFgXMU6HD5U9EgOFIoQC1jQXL1CsfwE1s/9w?= =?us-ascii?Q?VmOAwUmvjJKEBtWRO7PAVtpjsZGPh/J6aRmvTHqBpsTPUAQF7YSpznzmxDKu?= =?us-ascii?Q?EnU5Y4A9EGVgdPFR5WoDC8OXpk4rI/0N/eTO+w/2kQ67A9LjFTeu/gEiImsP?= =?us-ascii?Q?Q87LX1o3dDgiFgkJNX+l1WN+qK54fFJa9HTHI3uqlKa+l5mDwdSKdykT1cA+?= =?us-ascii?Q?giR52tKwLda9jI4nuzLiI01EOvvKrC+C/e84c107tcvzUQ9sZpOy1lAPmCAs?= =?us-ascii?Q?DAMYiDmGID5UaHAwR1FKQGkntvmcZAGG1Hi4hcQM2Sy54o4pRnPa3SHxmOzd?= =?us-ascii?Q?wxRqALx5D6pwTIWPFBgCzAx3kAT8XwOwJEnEdc6d2+keEITLbUPpeOffR3H7?= =?us-ascii?Q?Sp3CK2jT7gy5jQPyjwTS4qBxl3GYBXgkd6zLb05QOMGRb5BpYhXjQpWjid0U?= =?us-ascii?Q?mKjj9648B/eDQfgX/aI8ZxxX?= X-OriginatorOrg: wavecomp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2b02198d-72dc-4f15-19ae-08d91b63585a X-MS-Exchange-CrossTenant-AuthSource: MW3PR22MB2299.namprd22.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 May 2021 07:46:15.0266 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 463607d3-1db3-40a0-8a29-970c56230104 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: SocUn/5qBqhEDQd5j1SU7k/LdY/9Q8lINDHzoH5sZqLLNKddhnW7TMw+BhtQIxA9zcKGxlnH9cIbqKDUjC8EOx8Br4MfS426xi4T8ko9Nz8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR2201MB1344 X-Spam-Status: No, score=-12.2 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, MSGID_FROM_MTA_HEADER, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 20 May 2021 07:46:22 -0000 2021-05-19 Faraz Shahbazker sim/common/ChangeLog: * sim-fpu.c (sim_fpu_op_nan): New. (sim_fpu_add): Factor out NaN operand handling with a call to sim_fpu_op_nan. (sim_fpu_sub, sim_fpu_mul, sim_fpu_div): Likewise. (sim_fpu_rem, sim_fpu_max, sim_fpu_min): Likewise. --- sim/common/sim-fpu.c | 189 +++++++------------------------------------ 1 file changed, 31 insertions(+), 158 deletions(-) diff --git a/sim/common/sim-fpu.c b/sim/common/sim-fpu.c index b5e96b9a324..7a2f5c4a605 100644 --- a/sim/common/sim-fpu.c +++ b/sim/common/sim-fpu.c @@ -986,7 +986,24 @@ sim_fpu_round_64 (sim_fpu *f, return do_round (f, 1, round, denorm); } =20 +/* NaN handling for binary operations. */ =20 +INLINE_SIM_FPU (int) +sim_fpu_op_nan (sim_fpu *f, const sim_fpu *l, const sim_fpu *r) +{ + if (sim_fpu_is_snan (l) || sim_fpu_is_snan (r)) + { + *f =3D sim_fpu_is_snan (l) ? *l : *r; + f->class =3D sim_fpu_class_qnan; + return sim_fpu_status_invalid_snan; + } + ASSERT (sim_fpu_is_nan (l) || sim_fpu_is_nan (r)); + if (sim_fpu_is_qnan (l)) + *f =3D *l; + else /* if (sim_fpu_is_qnan (r)) */ + *f =3D *r; + return 0; +} =20 /* Arithmetic ops */ =20 @@ -995,28 +1012,8 @@ sim_fpu_add (sim_fpu *f, const sim_fpu *l, const sim_fpu *r) { - if (sim_fpu_is_snan (l)) - { - *f =3D *l; - f->class =3D sim_fpu_class_qnan; - return sim_fpu_status_invalid_snan; - } - if (sim_fpu_is_snan (r)) - { - *f =3D *r; - f->class =3D sim_fpu_class_qnan; - return sim_fpu_status_invalid_snan; - } - if (sim_fpu_is_qnan (l)) - { - *f =3D *l; - return 0; - } - if (sim_fpu_is_qnan (r)) - { - *f =3D *r; - return 0; - } + if (sim_fpu_is_nan (l) || sim_fpu_is_nan (r)) + return sim_fpu_op_nan (f, l, r);x if (sim_fpu_is_infinity (l)) { if (sim_fpu_is_infinity (r) @@ -1144,28 +1141,8 @@ sim_fpu_sub (sim_fpu *f, const sim_fpu *l, const sim_fpu *r) { - if (sim_fpu_is_snan (l)) - { - *f =3D *l; - f->class =3D sim_fpu_class_qnan; - return sim_fpu_status_invalid_snan; - } - if (sim_fpu_is_snan (r)) - { - *f =3D *r; - f->class =3D sim_fpu_class_qnan; - return sim_fpu_status_invalid_snan; - } - if (sim_fpu_is_qnan (l)) - { - *f =3D *l; - return 0; - } - if (sim_fpu_is_qnan (r)) - { - *f =3D *r; - return 0; - } + if (sim_fpu_is_nan (l) || sim_fpu_is_nan (r)) + return sim_fpu_op_nan (f, l, r); if (sim_fpu_is_infinity (l)) { if (sim_fpu_is_infinity (r) @@ -1298,28 +1275,8 @@ sim_fpu_mul (sim_fpu *f, const sim_fpu *l, const sim_fpu *r) { - if (sim_fpu_is_snan (l)) - { - *f =3D *l; - f->class =3D sim_fpu_class_qnan; - return sim_fpu_status_invalid_snan; - } - if (sim_fpu_is_snan (r)) - { - *f =3D *r; - f->class =3D sim_fpu_class_qnan; - return sim_fpu_status_invalid_snan; - } - if (sim_fpu_is_qnan (l)) - { - *f =3D *l; - return 0; - } - if (sim_fpu_is_qnan (r)) - { - *f =3D *r; - return 0; - } + if (sim_fpu_is_nan (l) || sim_fpu_is_nan (r)) + return sim_fpu_op_nan (f, l, r); if (sim_fpu_is_infinity (l)) { if (sim_fpu_is_zero (r)) @@ -1423,30 +1380,8 @@ sim_fpu_div (sim_fpu *f, const sim_fpu *l, const sim_fpu *r) { - if (sim_fpu_is_snan (l)) - { - *f =3D *l; - f->class =3D sim_fpu_class_qnan; - return sim_fpu_status_invalid_snan; - } - if (sim_fpu_is_snan (r)) - { - *f =3D *r; - f->class =3D sim_fpu_class_qnan; - return sim_fpu_status_invalid_snan; - } - if (sim_fpu_is_qnan (l)) - { - *f =3D *l; - f->class =3D sim_fpu_class_qnan; - return 0; - } - if (sim_fpu_is_qnan (r)) - { - *f =3D *r; - f->class =3D sim_fpu_class_qnan; - return 0; - } + if (sim_fpu_is_nan (l) || sim_fpu_is_nan (r)) + return sim_fpu_op_nan (f, l, r); if (sim_fpu_is_infinity (l)) { if (sim_fpu_is_infinity (r)) @@ -1556,30 +1491,8 @@ sim_fpu_rem (sim_fpu *f, const sim_fpu *l, const sim_fpu *r) { - if (sim_fpu_is_snan (l)) - { - *f =3D *l; - f->class =3D sim_fpu_class_qnan; - return sim_fpu_status_invalid_snan; - } - if (sim_fpu_is_snan (r)) - { - *f =3D *r; - f->class =3D sim_fpu_class_qnan; - return sim_fpu_status_invalid_snan; - } - if (sim_fpu_is_qnan (l)) - { - *f =3D *l; - f->class =3D sim_fpu_class_qnan; - return 0; - } - if (sim_fpu_is_qnan (r)) - { - *f =3D *r; - f->class =3D sim_fpu_class_qnan; - return 0; - } + if (sim_fpu_is_nan (l) || sim_fpu_is_nan (r)) + return sim_fpu_op_nan (f, l, r); if (sim_fpu_is_infinity (l)) { *f =3D sim_fpu_qnan; @@ -1639,28 +1552,8 @@ sim_fpu_max (sim_fpu *f, const sim_fpu *l, const sim_fpu *r) { - if (sim_fpu_is_snan (l)) - { - *f =3D *l; - f->class =3D sim_fpu_class_qnan; - return sim_fpu_status_invalid_snan; - } - if (sim_fpu_is_snan (r)) - { - *f =3D *r; - f->class =3D sim_fpu_class_qnan; - return sim_fpu_status_invalid_snan; - } - if (sim_fpu_is_qnan (l)) - { - *f =3D *l; - return 0; - } - if (sim_fpu_is_qnan (r)) - { - *f =3D *r; - return 0; - } + if (sim_fpu_is_nan (l) || sim_fpu_is_nan (r)) + return sim_fpu_op_nan (f, l, r); if (sim_fpu_is_infinity (l)) { if (sim_fpu_is_infinity (r) @@ -1722,28 +1615,8 @@ sim_fpu_min (sim_fpu *f, const sim_fpu *l, const sim_fpu *r) { - if (sim_fpu_is_snan (l)) - { - *f =3D *l; - f->class =3D sim_fpu_class_qnan; - return sim_fpu_status_invalid_snan; - } - if (sim_fpu_is_snan (r)) - { - *f =3D *r; - f->class =3D sim_fpu_class_qnan; - return sim_fpu_status_invalid_snan; - } - if (sim_fpu_is_qnan (l)) - { - *f =3D *l; - return 0; - } - if (sim_fpu_is_qnan (r)) - { - *f =3D *r; - return 0; - } + if (sim_fpu_is_nan (l) || sim_fpu_is_nan (r)) + return sim_fpu_op_nan (f, l, r); if (sim_fpu_is_infinity (l)) { if (sim_fpu_is_infinity (r) --=20 2.25.1