mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-10-30 16:17:05 +00:00 
			
		
		
		
	The "half vectors" are now widened to full size by the legalizer. The only exception is in parameter passing, where half vectors are expanded. This causes changes to some dejagnu tests. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111360 91177308-0d34-0410-b5e6-96231b3b80d8
		
			
				
	
	
		
			34 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			LLVM
		
	
	
	
	
	
			
		
		
	
	
			34 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			LLVM
		
	
	
	
	
	
| ; Test parameter passing and return values
 | |
| ;RUN: llc --march=cellspu %s -o - | FileCheck %s
 | |
| 
 | |
| ; this fits into registers r3-r74
 | |
| %paramstruct = type { i32,i32,i32,i32,i32,i32,i32,i32,i32,i32,i32,i32,
 | |
|                       i32,i32,i32,i32,i32,i32,i32,i32,i32,i32,i32,i32,
 | |
|                       i32,i32,i32,i32,i32,i32,i32,i32,i32,i32,i32,i32,
 | |
|                       i32,i32,i32,i32,i32,i32,i32,i32,i32,i32,i32,i32,
 | |
|                       i32,i32,i32,i32,i32,i32,i32,i32,i32,i32,i32,i32,
 | |
|                       i32,i32,i32,i32,i32,i32,i32,i32,i32,i32,i32,i32}
 | |
| define ccc i32 @test_regs( %paramstruct %prm )
 | |
| {
 | |
| ;CHECK:	lr	$3, $74
 | |
| ;CHECK:	bi	$lr
 | |
|   %1 = extractvalue %paramstruct %prm, 71
 | |
|   ret i32 %1
 | |
| }
 | |
| 
 | |
| define ccc i32 @test_regs_and_stack( %paramstruct %prm, i32 %stackprm )
 | |
| {
 | |
| ;CHECK-NOT:	a	$3, $74, $75
 | |
|   %1 = extractvalue %paramstruct %prm, 71
 | |
|   %2 = add i32 %1, %stackprm
 | |
|   ret i32 %2
 | |
| }
 | |
| 
 | |
| define ccc %paramstruct @test_return( i32 %param,  %paramstruct %prm )
 | |
| {
 | |
| ;CHECK:  lqd	$75, 80($sp)
 | |
| ;CHECK:  lr    $3, $4
 | |
|   ret %paramstruct %prm
 | |
| }
 | |
| 
 |