MLRISC

MLRISC Contributors Requirements How to Obtain MLRISC

Overview

Problem Statement Contributions MLRISC Based Compiler MLRISC Intermediate Representation MLRisc Generation Back End Optimizations Register Allocation Machine Description Garbage Collection Safety System Integration Optimizations Graphical Interface Line Counts Systems Using MLRISC Future Work

System

Architecture of MLRISC The MLTREE Language MLTree Extensions MLTree Utilities Instruction Selection Assemblers Machine Code Emitters Delay Slot Filling Span Dependency Resolution The Graph Library The Graph Visualization Library Basic Compiler Graphs The MLRISC IR SSA Optimizations ILP Optimizations Optimizations for VLIW/EPIC Architectur... Register Allocator

Back Ends

The Alpha Back End The PA RISC Back End The Sparc Back End The Intel x86 Back End The PowerPC Back End The MIPS Back End The TI C6x Back End

Basic Types

Annotations Cells Cluster Client Defined Constants Client Defined Pseudo Ops Instructions Instruction Streams Label Expressions Labels Regions Regmap

# Line Counts

| SML/NJ | MLRISC
Generic | 3,023 | 6,814
Hppa | 725 | 2,285
Alpha | 614 | 2,316
TOTAL | 4,362 | 11,415

The table shows the number of lines involved in a basic MLRISC code generator for SML/NJ that only does graph coloring register allocation. The SML/NJ column shows the number of lines specific to SML/N and the MLRISC column shows the number of lines specific to MLRISC. The Generic shows the number of lines that are target independent for both SML/NJ and MLRISC. The Hppa and Alpha shows the number of lines that are target dependent for both the HP Hppa and DEC Alpha targets.

The bulk of the `3,023` generic to SML/NJ is involved in the generation of MLRisc trees. Once this is done the incremental cost of adding a target is between `600` to `700` lines.

The MLRISC column shows that the bulk of MLRISC is quite generic and a client is saved from writing `11,415` lines of code.

| SML/NJ | MLRISC
Generic | 121 + 3,023 | 15,686 + 6,814
Hppa | 32 + 725 | 920 + 2,285
Alpha | 614 | 2,316
TOTAL | 153 + 4,362 | 16,606 + 11,415

If one were to include the preliminary numbers for global acyclic scheduling in the above table, we find that the incremental cost required by the client is quite small -- approximately `153` lines of which `121` are generic. However, the scheduling infra structure is quite large, a lot of it being quite generic.

Lal George
Allen Leung

Generated by mltex2html
Last modified: Mon Oct 3 20:52:35 UTC 2022 by buildd@x86-grnet-02