]> gitweb.factorcode.org Git - factor.git/commitdiff
Update x86 assembler for SSE2
authorslava <slava@factorcode.org>
Thu, 4 May 2006 20:05:58 +0000 (20:05 +0000)
committerslava <slava@factorcode.org>
Thu, 4 May 2006 20:05:58 +0000 (20:05 +0000)
library/compiler/amd64/alien.factor
library/compiler/x86/assembler.factor

index f84ff9dc6d5625b38a3b8bcb750675b453453e1d..824b31e10999cbdcbf9d92aaf56bd8c7ac32ae73 100644 (file)
@@ -14,11 +14,11 @@ M: int-regs freg>stack drop >r stack@ r> MOV ;
 
 M: int-regs stack>freg drop swap stack@ MOV ;
 
-: MOVSS/LPD float-regs-size 4 = [ MOVSS ] [ MOVLPD ] if ;
+: MOVSS/D float-regs-size 4 = [ MOVSS ] [ MOVSD ] if ;
 
-M: float-regs freg>stack >r >r stack@ r> r> MOVSS/LPD ;
+M: float-regs freg>stack >r >r stack@ r> r> MOVSS/D ;
 
-M: float-regs stack>freg >r swap stack@ r> MOVSS/LPD ;
+M: float-regs stack>freg >r swap stack@ r> MOVSS/D ;
 
 M: stack-params stack>freg
     drop >r R11 swap stack@ MOV r> stack@ R11 MOV ;
index 7ab30b76cba4f9461e3c0d589555658002ae7376..51a493ceef03c48f5725d48a526a713e4a9a2cbb 100644 (file)
@@ -374,12 +374,20 @@ M: operand CMP OCT: 071 2-operand ;
 ( SSE multimedia instructions )
 
 : 2-operand-sse ( dst src op1 op2 -- )
-    pick register-128? [ nip ] [ drop swapd ] if
+    #! We swap the operands here to make everything consistent
+    #! with the integer instructions.
+    swap assemble-1 swapd
     >r 2dup t prefix HEX: 0f assemble-1 r>
     assemble-1 reg-code swap addressing ;
 
-: MOVLPD ( dest src -- )
-    HEX: 66 assemble-1 HEX: 12 HEX: 13 2-operand-sse ;
-
-: MOVSS ( dest src -- )
-    HEX: f3 assemble-1 HEX: 10 HEX: 11 2-operand-sse ;
+: MOVSS ( dest src -- ) HEX: f3 HEX: 10 2-operand-sse ;
+: MOVSD ( dest src -- ) HEX: f2 HEX: 10 2-operand-sse ;
+: ADDSD ( dest src -- ) HEX: f2 HEX: 58 2-operand-sse ;
+: MULSD ( dest src -- ) HEX: f2 HEX: 59 2-operand-sse ;
+: SUBSD ( dest src -- ) HEX: f2 HEX: 5c 2-operand-sse ;
+: DIVSD ( dest src -- ) HEX: f2 HEX: 5e 2-operand-sse ;
+: SQRTSD ( dest src -- ) HEX: f2 HEX: 51 2-operand-sse ;
+: UCOMISD ( dest src -- ) HEX: 66 HEX: 2e 2-operand-sse ;
+: COMISD ( dest src -- ) HEX: 66 HEX: 2f 2-operand-sse ;
+: CVTSI2SD ( dest src -- ) HEX: f2 HEX: 2a 2-operand-sse ;
+: CVTSD2SI ( dest src -- ) HEX: f2 HEX: 2d 2-operand-sse ;