Update x86 assembler for SSE2
parent
229b0c26a4
commit
e2f6bf6fef
|
|
@ -14,11 +14,11 @@ M: int-regs freg>stack drop >r stack@ r> MOV ;
|
||||||
|
|
||||||
M: int-regs stack>freg drop swap stack@ 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
|
M: stack-params stack>freg
|
||||||
drop >r R11 swap stack@ MOV r> stack@ R11 MOV ;
|
drop >r R11 swap stack@ MOV r> stack@ R11 MOV ;
|
||||||
|
|
|
||||||
|
|
@ -374,12 +374,20 @@ M: operand CMP OCT: 071 2-operand ;
|
||||||
( SSE multimedia instructions )
|
( SSE multimedia instructions )
|
||||||
|
|
||||||
: 2-operand-sse ( dst src op1 op2 -- )
|
: 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>
|
>r 2dup t prefix HEX: 0f assemble-1 r>
|
||||||
assemble-1 reg-code swap addressing ;
|
assemble-1 reg-code swap addressing ;
|
||||||
|
|
||||||
: MOVLPD ( dest src -- )
|
: MOVSS ( dest src -- ) HEX: f3 HEX: 10 2-operand-sse ;
|
||||||
HEX: 66 assemble-1 HEX: 12 HEX: 13 2-operand-sse ;
|
: MOVSD ( dest src -- ) HEX: f2 HEX: 10 2-operand-sse ;
|
||||||
|
: ADDSD ( dest src -- ) HEX: f2 HEX: 58 2-operand-sse ;
|
||||||
: MOVSS ( dest src -- )
|
: MULSD ( dest src -- ) HEX: f2 HEX: 59 2-operand-sse ;
|
||||||
HEX: f3 assemble-1 HEX: 10 HEX: 11 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 ;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue