<!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 >MachRegs</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_MachRegs.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.10.4: 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" >MachRegs</FONT ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="section4" ><B >Contents</B ></TD ></TR ><TR ><TD ><DL ><DT ><A HREF="#1" >Immediate values </A ></DT ><DT ><A HREF="#2" >Addressing modes </A ></DT ><DT ><A HREF="#3" >The <TT ><A HREF="MachRegs.html#t%3AReg" >Reg</A ></TT > type </A ></DT ><DT ><A HREF="#4" >Global registers </A ></DT ><DT ><A HREF="#5" >Machine-dependent register-related stuff </A ></DT ></DL ></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" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="#t%3AImm" >Imm</A > </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" >= <A HREF="#v%3AImmInt" >ImmInt</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3AImmInteger" >ImmInteger</A > <A HREF="../integer/GHC-Integer.html#t%3AInteger" >Integer</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3AImmCLbl" >ImmCLbl</A > <A HREF="CLabel.html#t%3ACLabel" >CLabel</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3AImmLit" >ImmLit</A > <A HREF="Pretty.html#t%3ADoc" >Doc</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3AImmIndex" >ImmIndex</A > <A HREF="CLabel.html#t%3ACLabel" >CLabel</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3AImmFloat" >ImmFloat</A > <A HREF="../base/Prelude.html#t%3ARational" >Rational</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3AImmDouble" >ImmDouble</A > <A HREF="../base/Prelude.html#t%3ARational" >Rational</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3AImmConstantSum" >ImmConstantSum</A > <A HREF="MachRegs.html#t%3AImm" >Imm</A > <A HREF="MachRegs.html#t%3AImm" >Imm</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3AImmConstantDiff" >ImmConstantDiff</A > <A HREF="MachRegs.html#t%3AImm" >Imm</A > <A HREF="MachRegs.html#t%3AImm" >Imm</A ></TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" >strImmLit</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AlitToImm" >litToImm</A > :: <A HREF="CmmExpr.html#t%3ACmmLit" >CmmLit</A > -> <A HREF="MachRegs.html#t%3AImm" >Imm</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%3AAddrMode" >AddrMode</A > </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" >= <A HREF="#v%3AAddrBaseIndex" >AddrBaseIndex</A > <A HREF="MachRegs.html#t%3AEABase" >EABase</A > <A HREF="MachRegs.html#t%3AEAIndex" >EAIndex</A > Displacement</TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3AImmAddr" >ImmAddr</A > <A HREF="MachRegs.html#t%3AImm" >Imm</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AaddrOffset" >addrOffset</A > :: <A HREF="MachRegs.html#t%3AAddrMode" >AddrMode</A > -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > -> <A HREF="../base/Data-Maybe.html#t%3AMaybe" >Maybe</A > <A HREF="MachRegs.html#t%3AAddrMode" >AddrMode</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A HREF="#t%3ARegNo" >RegNo</A > = <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</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%3AReg" >Reg</A > </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" >= <A HREF="#v%3ARealReg" >RealReg</A > !<A HREF="MachRegs.html#t%3ARegNo" >RegNo</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3AVirtualRegI" >VirtualRegI</A > !<A HREF="Unique.html#t%3AUnique" >Unique</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3AVirtualRegHi" >VirtualRegHi</A > !<A HREF="Unique.html#t%3AUnique" >Unique</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3AVirtualRegF" >VirtualRegF</A > !<A HREF="Unique.html#t%3AUnique" >Unique</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3AVirtualRegD" >VirtualRegD</A > !<A HREF="Unique.html#t%3AUnique" >Unique</A ></TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisRealReg" >isRealReg</A > :: <A HREF="MachRegs.html#t%3AReg" >Reg</A > -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisVirtualReg" >isVirtualReg</A > :: <A HREF="MachRegs.html#t%3AReg" >Reg</A > -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3ArenameVirtualReg" >renameVirtualReg</A > :: <A HREF="Unique.html#t%3AUnique" >Unique</A > -> <A HREF="MachRegs.html#t%3AReg" >Reg</A > -> <A HREF="MachRegs.html#t%3AReg" >Reg</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%3ARegClass" >RegClass</A > </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" >= <A HREF="#v%3ARcInteger" >RcInteger</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3ARcFloat" >RcFloat</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3ARcDouble" >RcDouble</A ></TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" >regClass</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtrivColorable" >trivColorable</A > :: <A HREF="MachRegs.html#t%3ARegClass" >RegClass</A > -> <A HREF="UniqSet.html#t%3AUniqSet" >UniqSet</A > <A HREF="MachRegs.html#t%3AReg" >Reg</A > -> <A HREF="UniqSet.html#t%3AUniqSet" >UniqSet</A > <A HREF="MachRegs.html#t%3AReg" >Reg</A > -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" >getHiVRegFromLo</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AmkVReg" >mkVReg</A > :: <A HREF="Unique.html#t%3AUnique" >Unique</A > -> <A HREF="MachOp.html#t%3AMachRep" >MachRep</A > -> <A HREF="MachRegs.html#t%3AReg" >Reg</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aget_GlobalReg_reg_or_addr" >get_GlobalReg_reg_or_addr</A > :: <A HREF="CmmExpr.html#t%3AGlobalReg" >GlobalReg</A > -> <A HREF="../base/Data-Either.html#t%3AEither" >Either</A > <A HREF="MachRegs.html#t%3AReg" >Reg</A > <A HREF="CmmExpr.html#t%3ACmmExpr" >CmmExpr</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AallocatableRegs" >allocatableRegs</A > :: [<A HREF="MachRegs.html#t%3ARegNo" >RegNo</A >]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AargRegs" >argRegs</A > :: <A HREF="MachRegs.html#t%3ARegNo" >RegNo</A > -> [<A HREF="MachRegs.html#t%3AReg" >Reg</A >]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AallArgRegs" >allArgRegs</A > :: [<A HREF="MachRegs.html#t%3AReg" >Reg</A >]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AcallClobberedRegs" >callClobberedRegs</A > :: [<A HREF="MachRegs.html#t%3AReg" >Reg</A >]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AallocatableRegsInClass" >allocatableRegsInClass</A > :: <A HREF="MachRegs.html#t%3ARegClass" >RegClass</A > -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AfreeReg" >freeReg</A > :: <A HREF="MachRegs.html#t%3ARegNo" >RegNo</A > -> <A HREF="FastBool.html#t%3AFastBool" >FastBool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AspRel" >spRel</A > :: <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > -> <A HREF="MachRegs.html#t%3AAddrMode" >AddrMode</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%3AEABase" >EABase</A > </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" >= <A HREF="#v%3AEABaseNone" >EABaseNone</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3AEABaseReg" >EABaseReg</A > <A HREF="MachRegs.html#t%3AReg" >Reg</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3AEABaseRip" >EABaseRip</A ></TD ></TR ></TABLE ></TD ></TR ></TABLE ></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%3AEAIndex" >EAIndex</A > </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" >= <A HREF="#v%3AEAIndexNone" >EAIndexNone</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3AEAIndex" >EAIndex</A > <A HREF="MachRegs.html#t%3AReg" >Reg</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aeax" >eax</A > :: <A HREF="MachRegs.html#t%3AReg" >Reg</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aebx" >ebx</A > :: <A HREF="MachRegs.html#t%3AReg" >Reg</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aecx" >ecx</A > :: <A HREF="MachRegs.html#t%3AReg" >Reg</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aedx" >edx</A > :: <A HREF="MachRegs.html#t%3AReg" >Reg</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aesi" >esi</A > :: <A HREF="MachRegs.html#t%3AReg" >Reg</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aedi" >edi</A > :: <A HREF="MachRegs.html#t%3AReg" >Reg</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aebp" >ebp</A > :: <A HREF="MachRegs.html#t%3AReg" >Reg</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aesp" >esp</A > :: <A HREF="MachRegs.html#t%3AReg" >Reg</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Afake0" >fake0</A > :: <A HREF="MachRegs.html#t%3AReg" >Reg</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Afake1" >fake1</A > :: <A HREF="MachRegs.html#t%3AReg" >Reg</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Afake2" >fake2</A > :: <A HREF="MachRegs.html#t%3AReg" >Reg</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Afake3" >fake3</A > :: <A HREF="MachRegs.html#t%3AReg" >Reg</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Afake4" >fake4</A > :: <A HREF="MachRegs.html#t%3AReg" >Reg</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Afake5" >fake5</A > :: <A HREF="MachRegs.html#t%3AReg" >Reg</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AaddrModeRegs" >addrModeRegs</A > :: <A HREF="MachRegs.html#t%3AAddrMode" >AddrMode</A > -> [<A HREF="MachRegs.html#t%3AReg" >Reg</A >]</TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" ><A NAME="1" ><A NAME="1" >Immediate values </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t:Imm" ><A NAME="t%3AImm" ></A ></A ><B >Imm</B > </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><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:ImmInt" ><A NAME="v%3AImmInt" ></A ></A ><B >ImmInt</B > <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:ImmInteger" ><A NAME="v%3AImmInteger" ></A ></A ><B >ImmInteger</B > <A HREF="../integer/GHC-Integer.html#t%3AInteger" >Integer</A ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:ImmCLbl" ><A NAME="v%3AImmCLbl" ></A ></A ><B >ImmCLbl</B > <A HREF="CLabel.html#t%3ACLabel" >CLabel</A ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:ImmLit" ><A NAME="v%3AImmLit" ></A ></A ><B >ImmLit</B > <A HREF="Pretty.html#t%3ADoc" >Doc</A ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:ImmIndex" ><A NAME="v%3AImmIndex" ></A ></A ><B >ImmIndex</B > <A HREF="CLabel.html#t%3ACLabel" >CLabel</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:ImmFloat" ><A NAME="v%3AImmFloat" ></A ></A ><B >ImmFloat</B > <A HREF="../base/Prelude.html#t%3ARational" >Rational</A ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:ImmDouble" ><A NAME="v%3AImmDouble" ></A ></A ><B >ImmDouble</B > <A HREF="../base/Prelude.html#t%3ARational" >Rational</A ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:ImmConstantSum" ><A NAME="v%3AImmConstantSum" ></A ></A ><B >ImmConstantSum</B > <A HREF="MachRegs.html#t%3AImm" >Imm</A > <A HREF="MachRegs.html#t%3AImm" >Imm</A ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:ImmConstantDiff" ><A NAME="v%3AImmConstantDiff" ></A ></A ><B >ImmConstantDiff</B > <A HREF="MachRegs.html#t%3AImm" >Imm</A > <A HREF="MachRegs.html#t%3AImm" >Imm</A ></TD ><TD CLASS="rdoc" ></TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" >strImmLit</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:litToImm" ><A NAME="v%3AlitToImm" ></A ></A ><B >litToImm</B > :: <A HREF="CmmExpr.html#t%3ACmmLit" >CmmLit</A > -> <A HREF="MachRegs.html#t%3AImm" >Imm</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" ><A NAME="2" ><A NAME="2" >Addressing modes </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t:AddrMode" ><A NAME="t%3AAddrMode" ></A ></A ><B >AddrMode</B > </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><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:AddrBaseIndex" ><A NAME="v%3AAddrBaseIndex" ></A ></A ><B >AddrBaseIndex</B > <A HREF="MachRegs.html#t%3AEABase" >EABase</A > <A HREF="MachRegs.html#t%3AEAIndex" >EAIndex</A > Displacement</TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:ImmAddr" ><A NAME="v%3AImmAddr" ></A ></A ><B >ImmAddr</B > <A HREF="MachRegs.html#t%3AImm" >Imm</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</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:addrOffset" ><A NAME="v%3AaddrOffset" ></A ></A ><B >addrOffset</B > :: <A HREF="MachRegs.html#t%3AAddrMode" >AddrMode</A > -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > -> <A HREF="../base/Data-Maybe.html#t%3AMaybe" >Maybe</A > <A HREF="MachRegs.html#t%3AAddrMode" >AddrMode</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" ><A NAME="3" ><A NAME="3" >The <TT ><A HREF="MachRegs.html#t%3AReg" >Reg</A ></TT > type </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A NAME="t:RegNo" ><A NAME="t%3ARegNo" ></A ></A ><B >RegNo</B > = <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t:Reg" ><A NAME="t%3AReg" ></A ></A ><B >Reg</B > </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><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:RealReg" ><A NAME="v%3ARealReg" ></A ></A ><B >RealReg</B > !<A HREF="MachRegs.html#t%3ARegNo" >RegNo</A ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:VirtualRegI" ><A NAME="v%3AVirtualRegI" ></A ></A ><B >VirtualRegI</B > !<A HREF="Unique.html#t%3AUnique" >Unique</A ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:VirtualRegHi" ><A NAME="v%3AVirtualRegHi" ></A ></A ><B >VirtualRegHi</B > !<A HREF="Unique.html#t%3AUnique" >Unique</A ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:VirtualRegF" ><A NAME="v%3AVirtualRegF" ></A ></A ><B >VirtualRegF</B > !<A HREF="Unique.html#t%3AUnique" >Unique</A ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:VirtualRegD" ><A NAME="v%3AVirtualRegD" ></A ></A ><B >VirtualRegD</B > !<A HREF="Unique.html#t%3AUnique" >Unique</A ></TD ><TD CLASS="rdoc" ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="section4" ><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Reg')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:Reg" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="../base/Data-Eq.html#t%3AEq" >Eq</A > <A HREF="MachRegs.html#t%3AReg" >Reg</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="../base/Data-Ord.html#t%3AOrd" >Ord</A > <A HREF="MachRegs.html#t%3AReg" >Reg</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="../base/Text-Show.html#t%3AShow" >Show</A > <A HREF="MachRegs.html#t%3AReg" >Reg</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Outputable.html#t%3AOutputable" >Outputable</A > <A HREF="MachRegs.html#t%3AReg" >Reg</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Unique.html#t%3AUniquable" >Uniquable</A > <A HREF="MachRegs.html#t%3AReg" >Reg</A ></TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isRealReg" ><A NAME="v%3AisRealReg" ></A ></A ><B >isRealReg</B > :: <A HREF="MachRegs.html#t%3AReg" >Reg</A > -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isVirtualReg" ><A NAME="v%3AisVirtualReg" ></A ></A ><B >isVirtualReg</B > :: <A HREF="MachRegs.html#t%3AReg" >Reg</A > -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:renameVirtualReg" ><A NAME="v%3ArenameVirtualReg" ></A ></A ><B >renameVirtualReg</B > :: <A HREF="Unique.html#t%3AUnique" >Unique</A > -> <A HREF="MachRegs.html#t%3AReg" >Reg</A > -> <A HREF="MachRegs.html#t%3AReg" >Reg</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t:RegClass" ><A NAME="t%3ARegClass" ></A ></A ><B >RegClass</B > </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><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:RcInteger" ><A NAME="v%3ARcInteger" ></A ></A ><B >RcInteger</B ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:RcFloat" ><A NAME="v%3ARcFloat" ></A ></A ><B >RcFloat</B ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:RcDouble" ><A NAME="v%3ARcDouble" ></A ></A ><B >RcDouble</B ></TD ><TD CLASS="rdoc" ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="section4" ><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:RegClass')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:RegClass" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="../base/Data-Eq.html#t%3AEq" >Eq</A > <A HREF="MachRegs.html#t%3ARegClass" >RegClass</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Outputable.html#t%3AOutputable" >Outputable</A > <A HREF="MachRegs.html#t%3ARegClass" >RegClass</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Unique.html#t%3AUniquable" >Uniquable</A > <A HREF="MachRegs.html#t%3ARegClass" >RegClass</A ></TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" >regClass</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:trivColorable" ><A NAME="v%3AtrivColorable" ></A ></A ><B >trivColorable</B > :: <A HREF="MachRegs.html#t%3ARegClass" >RegClass</A > -> <A HREF="UniqSet.html#t%3AUniqSet" >UniqSet</A > <A HREF="MachRegs.html#t%3AReg" >Reg</A > -> <A HREF="UniqSet.html#t%3AUniqSet" >UniqSet</A > <A HREF="MachRegs.html#t%3AReg" >Reg</A > -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" >getHiVRegFromLo</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:mkVReg" ><A NAME="v%3AmkVReg" ></A ></A ><B >mkVReg</B > :: <A HREF="Unique.html#t%3AUnique" >Unique</A > -> <A HREF="MachOp.html#t%3AMachRep" >MachRep</A > -> <A HREF="MachRegs.html#t%3AReg" >Reg</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" ><A NAME="4" ><A NAME="4" >Global registers </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:get_GlobalReg_reg_or_addr" ><A NAME="v%3Aget_GlobalReg_reg_or_addr" ></A ></A ><B >get_GlobalReg_reg_or_addr</B > :: <A HREF="CmmExpr.html#t%3AGlobalReg" >GlobalReg</A > -> <A HREF="../base/Data-Either.html#t%3AEither" >Either</A > <A HREF="MachRegs.html#t%3AReg" >Reg</A > <A HREF="CmmExpr.html#t%3ACmmExpr" >CmmExpr</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" ><A NAME="5" ><A NAME="5" >Machine-dependent register-related stuff </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:allocatableRegs" ><A NAME="v%3AallocatableRegs" ></A ></A ><B >allocatableRegs</B > :: [<A HREF="MachRegs.html#t%3ARegNo" >RegNo</A >]</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:argRegs" ><A NAME="v%3AargRegs" ></A ></A ><B >argRegs</B > :: <A HREF="MachRegs.html#t%3ARegNo" >RegNo</A > -> [<A HREF="MachRegs.html#t%3AReg" >Reg</A >]</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:allArgRegs" ><A NAME="v%3AallArgRegs" ></A ></A ><B >allArgRegs</B > :: [<A HREF="MachRegs.html#t%3AReg" >Reg</A >]</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:callClobberedRegs" ><A NAME="v%3AcallClobberedRegs" ></A ></A ><B >callClobberedRegs</B > :: [<A HREF="MachRegs.html#t%3AReg" >Reg</A >]</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:allocatableRegsInClass" ><A NAME="v%3AallocatableRegsInClass" ></A ></A ><B >allocatableRegsInClass</B > :: <A HREF="MachRegs.html#t%3ARegClass" >RegClass</A > -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="doc" >The number of regs in each class. We go via top level CAFs to ensure that we're not recomputing the length of these lists each time the fn is called. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:freeReg" ><A NAME="v%3AfreeReg" ></A ></A ><B >freeReg</B > :: <A HREF="MachRegs.html#t%3ARegNo" >RegNo</A > -> <A HREF="FastBool.html#t%3AFastBool" >FastBool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:spRel" ><A NAME="v%3AspRel" ></A ></A ><B >spRel</B > :: <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > -> <A HREF="MachRegs.html#t%3AAddrMode" >AddrMode</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t:EABase" ><A NAME="t%3AEABase" ></A ></A ><B >EABase</B > </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><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:EABaseNone" ><A NAME="v%3AEABaseNone" ></A ></A ><B >EABaseNone</B ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:EABaseReg" ><A NAME="v%3AEABaseReg" ></A ></A ><B >EABaseReg</B > <A HREF="MachRegs.html#t%3AReg" >Reg</A ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:EABaseRip" ><A NAME="v%3AEABaseRip" ></A ></A ><B >EABaseRip</B ></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:EAIndex" ><A NAME="t%3AEAIndex" ></A ></A ><B >EAIndex</B > </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><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:EAIndexNone" ><A NAME="v%3AEAIndexNone" ></A ></A ><B >EAIndexNone</B ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:EAIndex" ><A NAME="v%3AEAIndex" ></A ></A ><B >EAIndex</B > <A HREF="MachRegs.html#t%3AReg" >Reg</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</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:eax" ><A NAME="v%3Aeax" ></A ></A ><B >eax</B > :: <A HREF="MachRegs.html#t%3AReg" >Reg</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:ebx" ><A NAME="v%3Aebx" ></A ></A ><B >ebx</B > :: <A HREF="MachRegs.html#t%3AReg" >Reg</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:ecx" ><A NAME="v%3Aecx" ></A ></A ><B >ecx</B > :: <A HREF="MachRegs.html#t%3AReg" >Reg</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:edx" ><A NAME="v%3Aedx" ></A ></A ><B >edx</B > :: <A HREF="MachRegs.html#t%3AReg" >Reg</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:esi" ><A NAME="v%3Aesi" ></A ></A ><B >esi</B > :: <A HREF="MachRegs.html#t%3AReg" >Reg</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:edi" ><A NAME="v%3Aedi" ></A ></A ><B >edi</B > :: <A HREF="MachRegs.html#t%3AReg" >Reg</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:ebp" ><A NAME="v%3Aebp" ></A ></A ><B >ebp</B > :: <A HREF="MachRegs.html#t%3AReg" >Reg</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:esp" ><A NAME="v%3Aesp" ></A ></A ><B >esp</B > :: <A HREF="MachRegs.html#t%3AReg" >Reg</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:fake0" ><A NAME="v%3Afake0" ></A ></A ><B >fake0</B > :: <A HREF="MachRegs.html#t%3AReg" >Reg</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:fake1" ><A NAME="v%3Afake1" ></A ></A ><B >fake1</B > :: <A HREF="MachRegs.html#t%3AReg" >Reg</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:fake2" ><A NAME="v%3Afake2" ></A ></A ><B >fake2</B > :: <A HREF="MachRegs.html#t%3AReg" >Reg</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:fake3" ><A NAME="v%3Afake3" ></A ></A ><B >fake3</B > :: <A HREF="MachRegs.html#t%3AReg" >Reg</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:fake4" ><A NAME="v%3Afake4" ></A ></A ><B >fake4</B > :: <A HREF="MachRegs.html#t%3AReg" >Reg</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:fake5" ><A NAME="v%3Afake5" ></A ></A ><B >fake5</B > :: <A HREF="MachRegs.html#t%3AReg" >Reg</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:addrModeRegs" ><A NAME="v%3AaddrModeRegs" ></A ></A ><B >addrModeRegs</B > :: <A HREF="MachRegs.html#t%3AAddrMode" >AddrMode</A > -> [<A HREF="MachRegs.html#t%3AReg" >Reg</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.4.2</TD ></TR ></TABLE ></BODY ></HTML >