39 lines
		
	
	
		
			920 B
		
	
	
	
		
			LLVM
		
	
	
	
			
		
		
	
	
			39 lines
		
	
	
		
			920 B
		
	
	
	
		
			LLVM
		
	
	
	
| ; RUN: llc -mtriple=arm-eabi        %s -o - | FileCheck %s
 | |
| ; RUN: llc -mtriple=thumbv7-windows %s -o - | FileCheck %s -check-prefix=CHECK-WIN
 | |
| 
 | |
| ; The Windows runtime doesn't have these.
 | |
| ; CHECK-WIN-NOT: __ashldi3
 | |
| ; CHECK-WIN-NOT: __ashrdi3
 | |
| ; CHECK-WIN-NOT: __lshrdi3
 | |
| 
 | |
| define i64 @f0(i64 %val, i64 %amt) minsize optsize {
 | |
| ; CHECK-LABEL:   f0:
 | |
| ; CHECK:         bl  __aeabi_llsl
 | |
|   %res = shl i64 %val, %amt
 | |
|   ret i64 %res
 | |
| }
 | |
| 
 | |
| define i32 @f1(i64 %x, i64 %y) minsize optsize {
 | |
| ; CHECK-LABEL:   f1:
 | |
| ; CHECK:         bl  __aeabi_llsl
 | |
| 	%a = shl i64 %x, %y
 | |
| 	%b = trunc i64 %a to i32
 | |
| 	ret i32 %b
 | |
| }
 | |
| 
 | |
| define i32 @f2(i64 %x, i64 %y) minsize optsize {
 | |
| ; CHECK-LABEL:   f2:
 | |
| ; CHECK:         bl  __aeabi_lasr
 | |
| 	%a = ashr i64 %x, %y
 | |
| 	%b = trunc i64 %a to i32
 | |
| 	ret i32 %b
 | |
| }
 | |
| 
 | |
| define i32 @f3(i64 %x, i64 %y) minsize optsize {
 | |
| ; CHECK-LABEL:   f3:
 | |
| ; CHECK:         bl  __aeabi_llsr
 | |
| 	%a = lshr i64 %x, %y
 | |
| 	%b = trunc i64 %a to i32
 | |
| 	ret i32 %b
 | |
| }
 |