(j3.2006) BEQ, BNE?

Van Snyder van.snyder
Sun Feb 3 17:18:34 EST 2013


On Sun, 2013-02-03 at 05:58 -0700, Dan Nagle wrote:
> Hi,
> 
> For integers, how difficult is it to understand the idiom
> 
> abs( i) < 1
> 
> or
> 
> abs( i - j) < 1

There is no problem understanding this, except it doesn't work for bits
if all zero bits and all one bits both represent numeric zero.

>  
> On Feb 3, 2013, at 05:12 , Robert Corbett <robert.corbett at oracle.com> wrote:
> 
> > 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
> > _______________________________________________
> > J3 mailing list
> > J3 at mailman.j3-fortran.org
> > http://mailman.j3-fortran.org/mailman/listinfo/j3
> 





More information about the J3 mailing list