30 lines
		
	
	
		
			681 B
		
	
	
	
		
			LLVM
		
	
	
	
			
		
		
	
	
			30 lines
		
	
	
		
			681 B
		
	
	
	
		
			LLVM
		
	
	
	
| ; RUN: llc < %s -march=x86 -x86-asm-syntax=intel | FileCheck %s
 | |
| ; check that fastcc is passing stuff in regs.
 | |
| 
 | |
| declare x86_fastcallcc i64 @callee(i64 inreg)
 | |
| 
 | |
| define i64 @caller() {
 | |
|         %X = call x86_fastcallcc  i64 @callee( i64 4294967299 )          ; <i64> [#uses=1]
 | |
| ; CHECK: mov{{.*}}edx, 1
 | |
|         ret i64 %X
 | |
| }
 | |
| 
 | |
| define x86_fastcallcc i64 @caller2(i64 inreg %X) {
 | |
|         ret i64 %X
 | |
| ; CHECK: mov{{.*}}eax, ecx
 | |
| }
 | |
| 
 | |
| declare x86_thiscallcc i64 @callee2(i32)
 | |
| 
 | |
| define i64 @caller3() {
 | |
|         %X = call x86_thiscallcc i64 @callee2( i32 3 )
 | |
| ; CHECK: mov{{.*}}ecx, 3
 | |
|         ret i64 %X
 | |
| }
 | |
| 
 | |
| define x86_thiscallcc i32 @caller4(i32 %X) {
 | |
|         ret i32 %X
 | |
| ; CHECK: mov{{.*}}eax, ecx
 | |
| }
 | |
| 
 |