cpu.x86.assembler: add MOVQ xmm, xmm/m64 and MOVQ xmm/m64, xmm instructions
							parent
							
								
									01d67104f6
								
							
						
					
					
						commit
						732befe272
					
				| 
						 | 
				
			
			@ -103,6 +103,15 @@ cell 4 = [
 | 
			
		|||
[ [ EAX [] XMM1 UCOMISD ] { } make ] must-fail
 | 
			
		||||
[ { HEX: 66 HEX: 0f HEX: 38 HEX: 2a HEX: 01 } ] [ [ XMM0 ECX [] MOVNTDQA ] { } make ] unit-test
 | 
			
		||||
 | 
			
		||||
[ { HEX: 66 HEX: 48 HEX: 0f HEX: 6e HEX: c8 } ] [ [ XMM1 RAX MOVD ] { } make ] unit-test
 | 
			
		||||
[ { HEX: 66 HEX: 0f HEX: 6e HEX: c8 } ] [ [ XMM1 EAX MOVD ] { } make ] unit-test
 | 
			
		||||
[ { HEX: 66 HEX: 48 HEX: 0f HEX: 7e HEX: c8 } ] [ [ RAX XMM1 MOVD ] { } make ] unit-test
 | 
			
		||||
[ { HEX: 66 HEX: 0f HEX: 7e HEX: c8 } ] [ [ EAX XMM1 MOVD ] { } make ] unit-test
 | 
			
		||||
 | 
			
		||||
[ { HEX: f3 HEX: 0f HEX: 7e HEX: 08 } ] [ [ XMM1 EAX [] MOVQ ] { } make ] unit-test
 | 
			
		||||
[ { HEX: f3 HEX: 0f HEX: 7e HEX: 08 } ] [ [ XMM1 EAX [] MOVQ ] { } make ] unit-test
 | 
			
		||||
[ { HEX: f3 HEX: 0f HEX: 7e HEX: ca } ] [ [ XMM1 XMM2 MOVQ ] { } make ] unit-test
 | 
			
		||||
 | 
			
		||||
! rm-r only sse instructions
 | 
			
		||||
[ { HEX: 0f HEX: 2b HEX: 08 } ] [ [ EAX [] XMM1 MOVNTPS ] { } make ] unit-test
 | 
			
		||||
[ { HEX: 66 HEX: 0f HEX: e7 HEX: 08 } ] [ [ EAX [] XMM1 MOVNTDQ ] { } make ] unit-test
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -554,6 +554,9 @@ PRIVATE>
 | 
			
		|||
: 2-operand-rm-mr-sse ( dst src op1{rm,mr} op2 -- )
 | 
			
		||||
    [ , ] when* direction-op-sse extended-opcode (2-operand) ;
 | 
			
		||||
 | 
			
		||||
: 2-operand-rm-mr-sse* ( dst src op12{rm,mr} -- )
 | 
			
		||||
    direction-op-sse first2 [ , ] when* extended-opcode (2-operand) ;
 | 
			
		||||
 | 
			
		||||
: 2-operand-rm-sse ( dst src op1 op2 -- )
 | 
			
		||||
    [ , ] when* extended-opcode (2-operand) ;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -771,6 +774,9 @@ ALIAS: PINSRQ PINSRD
 | 
			
		|||
: MOVDQA     ( dest src -- ) { HEX: 6f HEX: 7f } HEX: 66 2-operand-rm-mr-sse ;
 | 
			
		||||
: MOVDQU     ( dest src -- ) { HEX: 6f HEX: 7f } HEX: f3 2-operand-rm-mr-sse ;
 | 
			
		||||
 | 
			
		||||
: MOVQ       ( dest src -- )
 | 
			
		||||
    { { HEX: 7e HEX: f3 } { HEX: d6 HEX: 66 } } 2-operand-rm-mr-sse* ;
 | 
			
		||||
 | 
			
		||||
<PRIVATE
 | 
			
		||||
 | 
			
		||||
: 2shuffler ( indexes/mask -- mask )
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue