[comp.lang.misc] HW support for primitives

cik@l.cc.purdue.edu (Herman Rubin) (11/12/90)

In article <241@csinc.UUCP>, rpeglar@csinc.UUCP (Rob Peglar) writes:
> In article <42992@mips.mips.COM>, mash@mips.COM (John Mashey) writes:

			...........................

> The world of supercomputing gives perfect examples.  In the ETA-10 and
> predecessor line of processors, there were many very specific instructions
> that used the vector and/or string units for primitive arithmetics like
> "delta" (difference operator) or operators such as square root.  There
> was even a polynomial evaluation instruction - yep, eval a polynomial in
> hardware.  (not on all machines in the series, mind you).  
> 
> In software, FORTRAN specifically, the access to these instructions was
> either write-it-yourself using callable assembler modules, or using a
> rather arcane embedded assembler syntax known as "q8".  (I omit gruesome
> detail)  Neither won favor.  Callable assembler suffered overhead penalty
> of call/return, not an insignificant thing in this architecture.  Q8 stuff
> was one of the most non-portable syntaxes I have ever encountered.  As for
> C it was actually slightly easier - one could embed real 'as' inside
> modules for the compiler to swallow.

Having used the call q8 pseudo-Fortran-calls to insert machine instructions,
fI am quite aware of the problems involved with them.  But it is not much
worse than the inserted assembler instructions which C allows.  Both of 
these suffer from the fact that the user cannot set up a sensible notation
for the operation; it is my opinion that in the past 20 years, few assembler
designers have even considered that they may be USED by other than compiler
writers.

The MACHINE instructions are not hard to use.  But the wholly artificial
and inconvenient assembler and call q8 syntax is.  There is an alternative;
a translator.  This is merely a weak front-end part of a compiler.
-- 
Herman Rubin, Dept. of Statistics, Purdue Univ., West Lafayette IN47907
Phone: (317)494-6054
hrubin@l.cc.purdue.edu (Internet, bitnet)   {purdue,pur-ee}!l.cc!hrubin(UUCP)