This dates back the period 1988-1992, and basically, it was the topic
of my PhD in computer science (defended on Jan 17th, 1991, at the
University of Lille).
At that glorious time, supercomputers were vector, pipelined,
multi-processors (Cray Y-MP, Cray-2, Nec SX3, and the like). Pentium
was not existing yet... We had in mind to design a language in which
one could express vector operations (instead of writing loops along
vector elements), that would be structured, and that could be compiled
on many supercomputers, as well as on workstations on which debugging
would be done, and that would generate efficient code (as efficient as
dedicated Fortran compilers). In this work, I have focussed on the
intermediate language level, and the code generation for various
targets (scalar workstation, and Cray Y-MP). I designed and
implemented the code generation for the Y-MP while during my
post-doctoral at the SCRI at the Florida State University, from April
to September 1991. I was pretty happy to be able to generate code that
was as efficient as the one generated by the Cray Fortran Compiler;
this involved a thorough study of the architecture of the Cray
processor, on which I had only a very, unthorough, documentation; so I
had to write some code chuncks in assembly language (CAL), measure the
execution times of various chuncks, and figure out why this chunck was
faster than this other one to finally end up with a strategy to
implement in my compiler on how to generate the best machine code.