]> gitweb.factorcode.org Git - factor.git/commitdiff
cpu.x86: xor rax, rax -> xor eax, eax
authorBjörn Lindqvist <bjourne@gmail.com>
Fri, 20 May 2016 11:38:42 +0000 (13:38 +0200)
committerBjörn Lindqvist <bjourne@gmail.com>
Fri, 20 May 2016 11:38:42 +0000 (13:38 +0200)
The latter should be equivalent in all ways, but its encoding is one
byte shorter.

basis/cpu/x86/x86-tests.factor
basis/cpu/x86/x86.factor

index 178681004739d3fd9a83eb5c06c92cd6cad8ef51..5e61d3c34c8731c023a8f33762bf9183483bf3eb 100644 (file)
@@ -74,6 +74,11 @@ cpu x86.64? [
     ] unit-test
 ] when
 
+! %load-immediate
+{ B{ 49 201 } } [
+    [ RCX 0 %load-immediate ] B{ } make
+] unit-test
+
 ! %prologue
 { t } [
     [ 2 cells %prologue ] B{ } make
index 1a9af24b63b956d9aef16278f235ab6c57eaa86a..5462587280ced48b4a913168741c79c0afb932f9 100644 (file)
@@ -61,7 +61,7 @@ M: x86 test-instruction? t ;
 
 M: x86 immediate-store? immediate-comparand? ;
 
-M: x86 %load-immediate [ dup XOR ] [ MOV ] if-zero ;
+M: x86 %load-immediate [ 32-bit-version-of dup XOR ] [ MOV ] if-zero ;
 
 M: x86 %load-reference
     [ swap 0 MOV rc-absolute-cell rel-literal ]