Raymond Toy pushed to branch issue-185-x86-shorter-insts at cmucl / cmucl

Commits:

1 changed file:

Changes:

  • src/compiler/x86/insts.lisp
    ... ... @@ -1274,12 +1274,7 @@
    1274 1274
     				 #b00000100
    
    1275 1275
     				 #b00000101)))
    
    1276 1276
     	     (emit-sized-immediate segment size src))
    
    1277
    -	    ((and (not (eq size :byte))
    
    1278
    -		  (or (<= -128 src 127)
    
    1279
    -		      ;; Check that the top 25 bits are all ones so
    
    1280
    -		      ;; that sign-extending an 8-bit value produces
    
    1281
    -		      ;; the desired 32-bit value.
    
    1282
    -		      (= (ldb (byte 25 7) src) #x1ffffff)))
    
    1277
    +	    ((and (not (eq size :byte)) (<= -128 (sign-extend src 32) 127))
    
    1283 1278
     	     (emit-byte segment #b10000011)
    
    1284 1279
     	     (emit-ea segment dst opcode allow-constants)
    
    1285 1280
     	     (emit-byte segment (ldb (byte 8 0) src)))