- (loop for (x y type) in `((2 1 fixnum)
- (2 1 ,ub)
- (2 1 ,sb)
- (,(1+ (ash 1 28)) ,(1- (ash 1 28)) fixnum)
- (,(+ 3 (ash 1 30)) ,(+ 2 (ash 1 30)) ,ub)
- (,(- -2 (ash 1 29)) ,(- 3 (ash 1 29)) ,sb)
- ,@(when (> sb-vm:n-word-bits 32)
- `((,(1+ (ash 1 29)) ,(1- (ash 1 29)) fixnum)
- (,(1+ (ash 1 31)) ,(1- (ash 1 31)) ,ub)
- (,(- -2 (ash 1 31)) ,(- 3 (ash 1 30)) ,sb)
- (,(ash 1 40) ,(ash 1 39) fixnum)
- (,(ash 1 40) ,(ash 1 39) ,ub)
- (,(ash 1 40) ,(ash 1 39) ,sb))))
+ (loop for (x y type)
+ in `((2 1 fixnum)
+ (2 1 ,ub)
+ (2 1 ,sb)
+ (,(1+ (ash 1 28)) ,(1- (ash 1 28)) fixnum)
+ (,(+ 3 (ash 1 30)) ,(+ 2 (ash 1 30)) ,ub)
+ (,(- -2 (ash 1 29)) ,(- 3 (ash 1 29)) ,sb)
+ ,@(when (> sb-vm:n-word-bits 32)
+ `((,(1+ (ash 1 29)) ,(1- (ash 1 29)) fixnum)
+ (,(1+ (ash 1 31)) ,(1- (ash 1 31)) ,ub)
+ (,(- -2 (ash 1 31)) ,(- 3 (ash 1 30)) ,sb)
+ (,(ash 1 40) ,(ash 1 39) fixnum)
+ (,(ash 1 40) ,(ash 1 39) ,ub)
+ (,(ash 1 40) ,(ash 1 39) ,sb)))
+ ;; fixnums that can be represented as 32-bit
+ ;; sign-extended immediates on x86-64
+ ,@(when (and (> sb-vm:n-word-bits 32)
+ (< sb-vm:n-fixnum-tag-bits 3))
+ `((,(1+ (ash 1 (- 31 sb-vm:n-fixnum-tag-bits)))
+ ,(1- (ash 1 (- 32 sb-vm:n-fixnum-tag-bits)))
+ fixnum))))