(j3.2006) BEQ, BNE?

Robert Corbett robert.corbett
Sun Feb 3 07:12:51 EST 2013

On 02/01/13 12:07, Van Snyder wrote:
> On Fri, 2013-02-01 at 10:10 -0700, Keith Bierman wrote:
>> The no so obvious thing is what cost(s) that may impose on the
>> implementors. Folks who were certain there were fixed numbers of
>> intrinsics may have "hard" limits, the interactions with optimization
>> and debuggers, etc. Different implementors could face very different
>> costs (from what very little I recall of the NAG compiler, once upon a
>> time I think it would have been small for Malcolm). For some other
>> compilers, not so small (not huge, but the combination of scarce
>> development, integration and test resources for most compiler groups
>> should never be underestimated. The more highly optimizing the
>> environment, the more likely it is that even trivial changes will have
>> more considerable impact).
> Bob Corbett argued that if one has written
>    if ( popcnt(ieor(i,j)) == 0 )
> or
>    if ( BLE(i,j) .and. BLE(j,i) )
> or
>    if ( BGE(i,j) .and. BGE(j,i) )
> or
>    any of the dozen or so other ways to say the same thing,
> a competent optimizing compiler will have optimized "the idioms" to an
> unsigned test for equality.
> How is that "easier" than implementing BEQ and BNE?

It does not require changing the compiler front-end other than at the final step 
when the next lower level of intermediate code is produced.  Adding a new 
intrinsic function to Oracle Solaris Studio Fortran requires extending the 
front-end intermediate code, adding new entries to the intrinsic function 
table,  adding new code for semantic checking, extending the module file format, 
updating the module file reader and writer, and updating the constant folding 
routines.  I might well have missed some steps.

Bob Corbett

More information about the J3 mailing list