
This file records register use conventions and info for the 4
supported platforms (since it is ABI dependent).  This is so as to
avoid having to endlessly re-look up this info in ABI documents.

                      -----------------------

x86-linux
~~~~~~~~~

Reg        Callee      Arg   
Name       Saves?      Reg?     Comment              Vex-uses?
--------------------------------------------------------------
eax        n           n        int[31:0] retreg     y
ebx        y           n                             y
ecx        n           n                             y
edx        n           n        int[63:32] retreg    y
esi        y           n                             y
edi        y           n                             y
ebp        y           n                             & guest state
esp        reserved    n/a                           n/a
eflags     n           n/a                           y
st0        n ?         n        fp retreg            y
st1-7      n ?         n                             y
xmm0-7     n ?         n                             y


amd64-linux
~~~~~~~~~~~

Reg        Callee      Arg    
Name       Saves?      Reg?     Comment              Vex-uses?
-------------------------------------------------------------------
rax        n           n        int[63:0] retreg
rbx        y           n                             y
rcx        n           int#4
rdx        n           int#3    int[127:64] retreg
rsi        n           int#2                         y
rdi        n           int#1                         y
rbp        y           n                             & guest state
rsp        reserved    n/a                           n/a
r8         n           int#5                         y
r9         n           int#6                         y
r10        n ?
r11        n                                         jmp temporary
r12-15     y                                         y
eflags     n           n/a                           y
st0-7      n           n        long double retreg   y
xmm0       n           fp#1     fp retreg
xmm1       n           fp#2     fp-high retreg
xmm2-7     n           fp#3-8                        y (3-7)
xmm8-15    n                                         y (8-12)


ppc32-linux
~~~~~~~~~~~

Reg        Callee      Arg    
Name       Saves?      Reg?     Comment              Vex-uses?
-------------------------------------------------------------------
r0         n           n        sometimes RAZ
r1         y           n        stack pointer
r2         n           n
r3         n           int#1    int[31:0] retreg     y
r4         n           int#2    also int retreg      y
r5         n           int#3                         y
r6         n           int#4                         y
r7         n           int#5                         y
r8         n           int#6                         y
r9         n           int#7                         y
r10        n           int#8                         y
r11        n                                         y
r12        n                                         y
r13        ?
r14-28     y                                         y
r29        y                                reserved for dispatcher
r30        y                                altivec spill temporary
r31        y                                         & guest state
f0         n
f1         n           fp#1     fp retreg
f2-8       n           fp#2-8
f9-13      n
f14-31     y                                         y (14-21)
v0-v19     ?
v20-31     y                                         y (20-27,29)
cr0-7
lr         y                    return address
ctr        n
xer        n
fpscr


ppc64-linux
~~~~~~~~~~~
TBD


ppc32-aix5
~~~~~~~~~~

Reg        Callee      Arg    
Name       Saves?      Reg?     Comment              Vex-uses?
-------------------------------------------------------------------
r0         n           n        sometimes RAZ
r1         y           n        stack pointer
r2         n           n        TOC pointer
r3         n           int#1    int[31:0] retreg     y
r4         n           int#2    also int retreg      y
r5         n           int#3                         y
r6         n           int#4                         y
r7         n           int#5                         y
r8         n           int#6                         y
r9         n           int#7                         y
r10        n           int#8                         y
r11        n                    "env pointer?!"      y
r12        n                    "exn handling"       y
r13        ?                    "reserved in 64-bit env"
r14-28     y                                         y
r29        y                                reserved for dispatcher
r30        y                                altivec spill temporary
r31        y                                         & guest state
f0         n
f1         n           fp#1     fp retreg
f2-13      n           fp#2-13  
f14-31     y                                         y (14-21)
v0-v19     ?
v20-31     y                                         y (20-27,29)
cr0-7
lr         y                    return address
ctr        n
xer        n
fpscr
