J3/13-230
To: J3
From: Van Snyder
Subject: BEQ, BNE instrinsic functions
Date: 2013 January 30
Title: BEQ, BNE instrinsic functions
Submitted by: Van Snyder
Status: For consideration
Basic functionality: Add intrinsic functions to test for equality and
inequality of bit strings.
Rationale: Testing for equality of bit strings (I,J) requires one of
the following:
if ( BLE(I,J) .and. BLE(J,I) ) ....
if ( POPCNT(IEOR(I,J)) == 0 ) ....
if ( I == J ) ....
The first two are cryptic and increase long-term cost for developers,
and for processor implementors if they optimize. They are inefficient
unless the processor recognizes the idiom.
The third is required by 4.4.2.2p1 to fail on ones-complement or
sign-magnitude platforms if I == +0 and J == -0.
Estimated impact: Minor
Markham M6 conformance: Remove simple deficiency and discrepancy.
Detailed specification: Add intrinsic functions to test for equality and
inequality of bit strings.
Draft edits: To estimate scope of project
Insert subclause 13.7.21a after 13.7.21:
<<13.7.21a BEQ (I, J)>>
Description. Bitwise equality.
Class. Elemental function.
Arguments.
I shall be of type integer or a .
J shall be of type integer or a .
Result Characteristics. Default logical.
Result Value. The result is true if each bit of I has the same value
as the corresponding bit of J; otherwise the result is false.
The interpretation of a as a sequence of bits is
described in 4.7. The interpretation of an integer value as a sequence
of bits is described in 13.3.
Example. BEQ ( B"1100", B"1100" ) has the value true. BEQ ( B"1010",
B"1100") has the value false.
Insert subclause 13.7.32a after 13.7.32:
<<13.7.32a BNE (I, J)>>
Description. Bitwise inequality.
Class. Elemental function.
Arguments.
I shall be of type integer or a .
J shall be of type integer or a .
Result Characteristics. Default logical.
Result Value. The result is true if any bit of I has a different value
from the corresponding bit of J; otherwise the result is false.
The interpretation of a as a sequence of bits is
described in 4.7. The interpretation of an integer value as a sequence
of bits is described in 13.3.
Example. BNE ( B"1010", B"1100") has the value true. BNE ( B"1100",
B"1100" ) has the value false.