- r8 r9 r10 r11 r12 r13 r14 r15)
- (def-misc-reg-tns dword-reg eax ebx ecx edx ebp esp edi esi)
- (def-misc-reg-tns word-reg ax bx cx dx bp sp di si)
- (def-misc-reg-tns byte-reg al ah bl bh cl ch dl dh)
- (def-misc-reg-tns single-reg fr0 fr1 fr2 fr3 fr4 fr5 fr6 fr7))
+ r8 r9 r10 r11 r12 r13 r14 r15)
+ (def-misc-reg-tns dword-reg eax ebx ecx edx ebp esp edi esi
+ r8d r9d r10d r11d r12d r13d r14d r15d)
+ (def-misc-reg-tns word-reg ax bx cx dx bp sp di si
+ r8w r9w r10w r11w r12w r13w r14w r15w)
+ (def-misc-reg-tns byte-reg al cl dl bl sil dil r8b r9b r10b
+ r11b r12b r13b r14b r15b)
+ (def-misc-reg-tns single-reg
+ float0 float1 float2 float3 float4 float5 float6 float7
+ float8 float9 float10 float11 float12 float13 float14 float15))
+
+(defun reg-in-size (tn size)
+ (make-random-tn :kind :normal
+ :sc (sc-or-lose
+ (ecase size
+ (:byte 'byte-reg)
+ (:word 'word-reg)
+ (:dword 'dword-reg)
+ (:qword 'unsigned-reg)))
+ :offset (tn-offset tn)))
+
+;; A register that's never used by the code generator, and can therefore
+;; be used as an assembly temporary in cases where a VOP :TEMPORARY can't
+;; be used.
+(defparameter temp-reg-tn r11-tn)