amd64_contract.pl
Audited machine forms for the scalar stack cache. Unknown forms fail, selecting the unchanged implementation, rather than guessing effects. Reads name register families. write(Family,Bits) records partial writes: 32 bits zero-extend, 8/16 preserve the rest. Memory effects include addressing-register reads; flags and control/frame effects are separate. This describes selected instructions, not IR liveness or GC roots. Calls are unconditional cache boundaries; their ABI argument reads are not enumerated. Do not use this as a general call-liveness contract.
Concrete names index directly; family/width queries generate the name without searching every family for every operand in a large function.
| 16 | rax | rax | 64 |
| 16 | eax | rax | 32 |
| 17 | ax | rax | 16 |
| 17 | al | rax | 8 |
| 18 | rcx | rcx | 64 |
| 18 | ecx | rcx | 32 |
| 19 | cx | rcx | 16 |
| 19 | cl | rcx | 8 |
| 20 | rdx | rdx | 64 |
| 20 | edx | rdx | 32 |
| 21 | dx | rdx | 16 |
| 21 | dl | rdx | 8 |
| 22 | rbx | rbx | 64 |
| 22 | ebx | rbx | 32 |
| 23 | bx | rbx | 16 |
| 23 | bl | rbx | 8 |
| 24 | rsi | rsi | 64 |
| 24 | esi | rsi | 32 |
| 25 | si | rsi | 16 |
| 25 | sil | rsi | 8 |
| 26 | rdi | rdi | 64 |
| 26 | edi | rdi | 32 |
| 27 | di | rdi | 16 |
| 27 | dil | rdi | 8 |
| 28 | rbp | rbp | 64 |
| 28 | ebp | rbp | 32 |
| 29 | bp | rbp | 16 |
| 29 | bpl | rbp | 8 |
| 30 | rsp | rsp | 64 |
| 30 | esp | rsp | 32 |
| 31 | sp | rsp | 16 |
| 31 | spl | rsp | 8 |
| 32 | r8 | r8 | 64 |
| 32 | r8d | r8 | 32 |
| 33 | r8w | r8 | 16 |
| 33 | r8b | r8 | 8 |
| 34 | r9 | r9 | 64 |
| 34 | r9d | r9 | 32 |
| 35 | r9w | r9 | 16 |
| 35 | r9b | r9 | 8 |
| 36 | r10 | r10 | 64 |
| 36 | r10d | r10 | 32 |
| 37 | r10w | r10 | 16 |
| 37 | r10b | r10 | 8 |
| 38 | r11 | r11 | 64 |
| 38 | r11d | r11 | 32 |
| 39 | r11w | r11 | 16 |
| 39 | r11b | r11 | 8 |
| 40 | r12 | r12 | 64 |
| 40 | r12d | r12 | 32 |
| 41 | r12w | r12 | 16 |
| 41 | r12b | r12 | 8 |
| 42 | r13 | r13 | 64 |
| 42 | r13d | r13 | 32 |
| 43 | r13w | r13 | 16 |
| 43 | r13b | r13 | 8 |
| 44 | r14 | r14 | 64 |
| 44 | r14d | r14 | 32 |
| 45 | r14w | r14 | 16 |
| 45 | r14b | r14 | 8 |
| 46 | r15 | r15 | 64 |
| 46 | r15d | r15 | 32 |
| 47 | r15w | r15 | 16 |
| 47 | r15b | r15 | 8 |
| 48 | xmm0 | xmm0 | 128 |
| 48 | xmm1 | xmm1 | 128 |
| 49 | xmm2 | xmm2 | 128 |
| 49 | xmm3 | xmm3 | 128 |
| 50 | xmm4 | xmm4 | 128 |
| 50 | xmm5 | xmm5 | 128 |
| 51 | xmm6 | xmm6 | 128 |
| 51 | xmm7 | xmm7 | 128 |
SSE forms use full-family symbolic outputs: the cache never changes one, so the validator need not emulate floating arithmetic or lanes.