cpu.x86.32: clean up %unary/binary-float-function
							parent
							
								
									7ff309d50e
								
							
						
					
					
						commit
						db5b33977b
					
				| 
						 | 
				
			
			@ -186,34 +186,27 @@ M: x86.32 %end-callback ( -- )
 | 
			
		|||
    0 save-vm-ptr
 | 
			
		||||
    "end_callback" f %alien-invoke ;
 | 
			
		||||
 | 
			
		||||
GENERIC: float-function-param ( stack-slot dst src -- )
 | 
			
		||||
GENERIC: float-function-param ( n dst src -- )
 | 
			
		||||
 | 
			
		||||
M:: spill-slot float-function-param ( stack-slot dst src -- )
 | 
			
		||||
M:: spill-slot float-function-param ( n dst src -- )
 | 
			
		||||
    ! We can clobber dst here since its going to contain the
 | 
			
		||||
    ! final result
 | 
			
		||||
    dst src double-rep %copy
 | 
			
		||||
    stack-slot dst double-rep %copy ;
 | 
			
		||||
    dst n double-rep %store-stack-param ;
 | 
			
		||||
 | 
			
		||||
M: register float-function-param
 | 
			
		||||
    nip double-rep %copy ;
 | 
			
		||||
 | 
			
		||||
: float-function-return ( reg -- )
 | 
			
		||||
    ESP [] FSTPL
 | 
			
		||||
    ESP [] MOVSD
 | 
			
		||||
    ESP 16 ADD ;
 | 
			
		||||
M:: register float-function-param ( n dst src -- )
 | 
			
		||||
    src n double-rep %store-stack-param ;
 | 
			
		||||
 | 
			
		||||
M:: x86.32 %unary-float-function ( dst src func -- )
 | 
			
		||||
    ESP -16 [+] dst src float-function-param
 | 
			
		||||
    ESP 16 SUB
 | 
			
		||||
    0 dst src float-function-param
 | 
			
		||||
    func "libm" load-library %alien-invoke
 | 
			
		||||
    dst float-function-return ;
 | 
			
		||||
    dst double-rep %load-return ;
 | 
			
		||||
 | 
			
		||||
M:: x86.32 %binary-float-function ( dst src1 src2 func -- )
 | 
			
		||||
    ESP -16 [+] dst src1 float-function-param
 | 
			
		||||
    ESP  -8 [+] dst src2 float-function-param
 | 
			
		||||
    ESP 16 SUB
 | 
			
		||||
    0 dst src1 float-function-param
 | 
			
		||||
    8 dst src2 float-function-param
 | 
			
		||||
    func "libm" load-library %alien-invoke
 | 
			
		||||
    dst float-function-return ;
 | 
			
		||||
    dst double-rep %load-return ;
 | 
			
		||||
 | 
			
		||||
: funny-large-struct-return? ( return abi -- ? )
 | 
			
		||||
    #! MINGW ABI incompatibility disaster
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue