| ; 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 | 
 | } |