mirror of
				https://gitlab.com/freepascal.org/fpc/source.git
				synced 2025-11-04 05:22:59 +01:00 
			
		
		
		
	+ SPARC: assembler implementation of SarInt64.
git-svn-id: trunk@26467 -
This commit is contained in:
		
							parent
							
								
									b398430b4c
								
							
						
					
					
						commit
						dd78cd5811
					
				@ -715,3 +715,28 @@ asm
 | 
				
			|||||||
end;
 | 
					end;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
{$endif}
 | 
					{$endif}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{$ifndef FPC_SYSTEM_HAS_SAR_QWORD}
 | 
				
			||||||
 | 
					{$define FPC_SYSTEM_HAS_SAR_QWORD}
 | 
				
			||||||
 | 
					function fpc_SarInt64(Const AValue : Int64;const Shift : Byte): Int64; [Public,Alias:'FPC_SARINT64']; compilerproc; assembler; nostackframe;
 | 
				
			||||||
 | 
					asm
 | 
				
			||||||
 | 
					{ %o0=high(AValue) %o1=low(AValue), result: %o0:%o1 }
 | 
				
			||||||
 | 
					    and    %o2,63,%o2
 | 
				
			||||||
 | 
					    subcc  %o2,32,%g0
 | 
				
			||||||
 | 
					    bcc    .L1
 | 
				
			||||||
 | 
					    nop
 | 
				
			||||||
 | 
					    srl    %o1,%o2,%o1
 | 
				
			||||||
 | 
					    subcc  %o2,%g0,%g0
 | 
				
			||||||
 | 
					    be     .Lexit
 | 
				
			||||||
 | 
					    sra    %o0,%o2,%o0
 | 
				
			||||||
 | 
					    sub    %g0,%o2,%o3
 | 
				
			||||||
 | 
					    sll    %o0,%o3,%o3
 | 
				
			||||||
 | 
					    ba     .Lexit
 | 
				
			||||||
 | 
					    or     %o3,%o1,%o1
 | 
				
			||||||
 | 
					.L1:
 | 
				
			||||||
 | 
					    sra    %o0,%o2,%o1
 | 
				
			||||||
 | 
					    sra    %o0,31,%o0
 | 
				
			||||||
 | 
					.Lexit:
 | 
				
			||||||
 | 
					end;
 | 
				
			||||||
 | 
					{$endif FPC_SYSTEM_HAS_SAR_QWORD}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user