From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2136) id 6A00E385023F; Fri, 26 Aug 2022 18:45:57 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 6A00E385023F DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1661539557; bh=KaJ9u15ZEcq8TXv7FlvzrRod3cWnuP0gKee97jXTm4M=; h=From:To:Subject:Date:From; b=F4NoQ1m4zwwMC6RhZBA0LZ5NKJDdM2QY8OxzQUnlaBfeHLndskxkrJibQB4ZKS7SJ iOGJnlCY+NxBBS5AB71GYgB+RqZXzsj8bXeUZyW9F5N9NvDRYHQcaIs5psCdRSbRyP E70C3BX3BQwAYnOUi3Tp1NwiplwLYO29TiHnIanU= MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: Aldy Hernandez To: gcc-cvs@gcc.gnu.org Subject: [gcc r13-2229] Add real_iszero to real.* X-Act-Checkin: gcc X-Git-Author: Aldy Hernandez X-Git-Refname: refs/heads/master X-Git-Oldrev: 33cae277637d569d66518b6805a84444b8d66e9c X-Git-Newrev: 1d3145360f95910f0661da0364b91dc7962d44fa Message-Id: <20220826184557.6A00E385023F@sourceware.org> Date: Fri, 26 Aug 2022 18:45:57 +0000 (GMT) List-Id: https://gcc.gnu.org/g:1d3145360f95910f0661da0364b91dc7962d44fa commit r13-2229-g1d3145360f95910f0661da0364b91dc7962d44fa Author: Aldy Hernandez Date: Fri Aug 26 16:57:09 2022 +0200 Add real_iszero to real.* We have real_isnegzero but no real_iszero. We could memcmp with 0, but that's just ugly. gcc/ChangeLog: * real.cc (real_iszero): New. * real.h (real_iszero): New. Diff: --- gcc/real.cc | 16 ++++++++++++++++ gcc/real.h | 6 ++++++ 2 files changed, 22 insertions(+) diff --git a/gcc/real.cc b/gcc/real.cc index dcf41b79f60..96f05ec68ca 100644 --- a/gcc/real.cc +++ b/gcc/real.cc @@ -1272,6 +1272,22 @@ real_isneg (const REAL_VALUE_TYPE *r) return r->sign; } +/* Determine whether a floating-point value X is plus or minus zero. */ + +bool +real_iszero (const REAL_VALUE_TYPE *r) +{ + return r->cl == rvc_zero; +} + +/* Determine whether a floating-point value X is zero with SIGN. */ + +bool +real_iszero (const REAL_VALUE_TYPE *r, bool sign) +{ + return real_iszero (r) && r->sign == sign; +} + /* Determine whether a floating-point value X is minus zero. */ bool diff --git a/gcc/real.h b/gcc/real.h index e01f9ed7282..ec78e8a8932 100644 --- a/gcc/real.h +++ b/gcc/real.h @@ -295,6 +295,12 @@ extern bool real_isneg (const REAL_VALUE_TYPE *); /* Determine whether a floating-point value X is minus zero. */ extern bool real_isnegzero (const REAL_VALUE_TYPE *); +/* Determine whether a floating-point value X is plus or minus zero. */ +extern bool real_iszero (const REAL_VALUE_TYPE *); + +/* Determine whether a floating-point value X is zero with SIGN. */ +extern bool real_iszero (const REAL_VALUE_TYPE *, bool sign); + /* Test relationships between reals. */ extern bool real_identical (const REAL_VALUE_TYPE *, const REAL_VALUE_TYPE *); extern bool real_equal (const REAL_VALUE_TYPE *, const REAL_VALUE_TYPE *);