(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