<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <!--Rendered using the Haskell Html Library v0.2--> <HTML ><HEAD ><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8" ><TITLE >SPARC.CodeGen.Base</TITLE ><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css" ><SCRIPT SRC="haddock-util.js" TYPE="text/javascript" ></SCRIPT ><SCRIPT TYPE="text/javascript" >window.onload = function () {setSynopsis("mini_SPARC-CodeGen-Base.html")};</SCRIPT ></HEAD ><BODY ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="topbar" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title" >ghc-6.12.3: The GHC API</TD ><TD CLASS="topbut" ><A HREF="index.html" >Contents</A ></TD ><TD CLASS="topbut" ><A HREF="doc-index.html" >Index</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="modulebar" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD ><FONT SIZE="6" >SPARC.CodeGen.Base</FONT ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" >Synopsis</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A HREF="#t%3AInstrBlock" >InstrBlock</A > = <A HREF="OrdList.html#t%3AOrdList" >OrdList</A > <A HREF="SPARC-Instr.html#t%3AInstr" >Instr</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="#t%3ACondCode" >CondCode</A > = <A HREF="#v%3ACondCode" >CondCode</A > <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A > <A HREF="SPARC-Cond.html#t%3ACond" >Cond</A > <A HREF="SPARC-CodeGen-Base.html#t%3AInstrBlock" >InstrBlock</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="#t%3AChildCode64" >ChildCode64</A > = <A HREF="#v%3AChildCode64" >ChildCode64</A > <A HREF="SPARC-CodeGen-Base.html#t%3AInstrBlock" >InstrBlock</A > <A HREF="Reg.html#t%3AReg" >Reg</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="#t%3AAmode" >Amode</A > = <A HREF="#v%3AAmode" >Amode</A > <A HREF="SPARC-AddrMode.html#t%3AAddrMode" >AddrMode</A > <A HREF="SPARC-CodeGen-Base.html#t%3AInstrBlock" >InstrBlock</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="#t%3ARegister" >Register</A > </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" >= <A HREF="#v%3AFixed" >Fixed</A > <A HREF="Size.html#t%3ASize" >Size</A > <A HREF="Reg.html#t%3AReg" >Reg</A > <A HREF="SPARC-CodeGen-Base.html#t%3AInstrBlock" >InstrBlock</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3AAny" >Any</A > <A HREF="Size.html#t%3ASize" >Size</A > (<A HREF="Reg.html#t%3AReg" >Reg</A > -> <A HREF="SPARC-CodeGen-Base.html#t%3AInstrBlock" >InstrBlock</A >)</TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AsetSizeOfRegister" >setSizeOfRegister</A > :: <A HREF="SPARC-CodeGen-Base.html#t%3ARegister" >Register</A > -> <A HREF="Size.html#t%3ASize" >Size</A > -> <A HREF="SPARC-CodeGen-Base.html#t%3ARegister" >Register</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AgetRegisterReg" >getRegisterReg</A > :: <A HREF="CmmExpr.html#t%3ACmmReg" >CmmReg</A > -> <A HREF="Reg.html#t%3AReg" >Reg</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AmangleIndexTree" >mangleIndexTree</A > :: <A HREF="CmmExpr.html#t%3ACmmExpr" >CmmExpr</A > -> <A HREF="CmmExpr.html#t%3ACmmExpr" >CmmExpr</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" >Documentation</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A NAME="t:InstrBlock" ><A NAME="t%3AInstrBlock" ></A ></A ><B >InstrBlock</B > = <A HREF="OrdList.html#t%3AOrdList" >OrdList</A > <A HREF="SPARC-Instr.html#t%3AInstr" >Instr</A ></TD ></TR ><TR ><TD CLASS="doc" ><TT ><A HREF="SPARC-CodeGen-Base.html#t%3AInstrBlock" >InstrBlock</A ></TT >s are the insn sequences generated by the insn selectors. They are really trees of insns to facilitate fast appending, where a left-to-right traversal yields the insns in the correct order. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t:CondCode" ><A NAME="t%3ACondCode" ></A ></A ><B >CondCode</B > </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" >Condition codes passed up the tree. </TD ></TR ><TR ><TD CLASS="section4" >Constructors</TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v:CondCode" ><A NAME="v%3ACondCode" ></A ></A ><B >CondCode</B > <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A > <A HREF="SPARC-Cond.html#t%3ACond" >Cond</A > <A HREF="SPARC-CodeGen-Base.html#t%3AInstrBlock" >InstrBlock</A ></TD ><TD CLASS="rdoc" ></TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t:ChildCode64" ><A NAME="t%3AChildCode64" ></A ></A ><B >ChildCode64</B > </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" ><P >a.k.a <A HREF="Register64.html" >Register64</A > Reg is the lower 32-bit temporary which contains the result. Use getHiVRegFromLo to find the other VRegUnique. </P ><P >Rules of this simplified insn selection game are therefore that the returned Reg may be modified </P ></TD ></TR ><TR ><TD CLASS="section4" >Constructors</TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v:ChildCode64" ><A NAME="v%3AChildCode64" ></A ></A ><B >ChildCode64</B > <A HREF="SPARC-CodeGen-Base.html#t%3AInstrBlock" >InstrBlock</A > <A HREF="Reg.html#t%3AReg" >Reg</A ></TD ><TD CLASS="rdoc" ></TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t:Amode" ><A NAME="t%3AAmode" ></A ></A ><B >Amode</B > </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" >Holds code that references a memory address. </TD ></TR ><TR ><TD CLASS="section4" >Constructors</TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v:Amode" ><A NAME="v%3AAmode" ></A ></A ><B >Amode</B > <A HREF="SPARC-AddrMode.html#t%3AAddrMode" >AddrMode</A > <A HREF="SPARC-CodeGen-Base.html#t%3AInstrBlock" >InstrBlock</A ></TD ><TD CLASS="rdoc" ></TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t:Register" ><A NAME="t%3ARegister" ></A ></A ><B >Register</B > </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" >Code to produce a result into a register. If the result must go in a specific register, it comes out as Fixed. Otherwise, the parent can decide which register to put it in. </TD ></TR ><TR ><TD CLASS="section4" >Constructors</TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v:Fixed" ><A NAME="v%3AFixed" ></A ></A ><B >Fixed</B > <A HREF="Size.html#t%3ASize" >Size</A > <A HREF="Reg.html#t%3AReg" >Reg</A > <A HREF="SPARC-CodeGen-Base.html#t%3AInstrBlock" >InstrBlock</A ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:Any" ><A NAME="v%3AAny" ></A ></A ><B >Any</B > <A HREF="Size.html#t%3ASize" >Size</A > (<A HREF="Reg.html#t%3AReg" >Reg</A > -> <A HREF="SPARC-CodeGen-Base.html#t%3AInstrBlock" >InstrBlock</A >)</TD ><TD CLASS="rdoc" ></TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:setSizeOfRegister" ><A NAME="v%3AsetSizeOfRegister" ></A ></A ><B >setSizeOfRegister</B > :: <A HREF="SPARC-CodeGen-Base.html#t%3ARegister" >Register</A > -> <A HREF="Size.html#t%3ASize" >Size</A > -> <A HREF="SPARC-CodeGen-Base.html#t%3ARegister" >Register</A ></TD ></TR ><TR ><TD CLASS="doc" >Change the size field in a Register. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:getRegisterReg" ><A NAME="v%3AgetRegisterReg" ></A ></A ><B >getRegisterReg</B > :: <A HREF="CmmExpr.html#t%3ACmmReg" >CmmReg</A > -> <A HREF="Reg.html#t%3AReg" >Reg</A ></TD ></TR ><TR ><TD CLASS="doc" >Grab the Reg for a CmmReg </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:mangleIndexTree" ><A NAME="v%3AmangleIndexTree" ></A ></A ><B >mangleIndexTree</B > :: <A HREF="CmmExpr.html#t%3ACmmExpr" >CmmExpr</A > -> <A HREF="CmmExpr.html#t%3ACmmExpr" >CmmExpr</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="botbar" >Produced by <A HREF="http://www.haskell.org/haddock/" >Haddock</A > version 2.6.1</TD ></TR ></TABLE ></BODY ></HTML >