1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-unknown-unknown | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Workerdefine i32 @shl48sar47(i64 %a) #0 { 4*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: shl48sar47: 5*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 6*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movswq %di, %rax 7*9880d681SAndroid Build Coastguard Worker %1 = shl i64 %a, 48 8*9880d681SAndroid Build Coastguard Worker %2 = ashr exact i64 %1, 47 9*9880d681SAndroid Build Coastguard Worker %3 = trunc i64 %2 to i32 10*9880d681SAndroid Build Coastguard Worker ret i32 %3 11*9880d681SAndroid Build Coastguard Worker} 12*9880d681SAndroid Build Coastguard Worker 13*9880d681SAndroid Build Coastguard Workerdefine i32 @shl48sar49(i64 %a) #0 { 14*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: shl48sar49: 15*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 16*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movswq %di, %rax 17*9880d681SAndroid Build Coastguard Worker %1 = shl i64 %a, 48 18*9880d681SAndroid Build Coastguard Worker %2 = ashr exact i64 %1, 49 19*9880d681SAndroid Build Coastguard Worker %3 = trunc i64 %2 to i32 20*9880d681SAndroid Build Coastguard Worker ret i32 %3 21*9880d681SAndroid Build Coastguard Worker} 22*9880d681SAndroid Build Coastguard Worker 23*9880d681SAndroid Build Coastguard Workerdefine i32 @shl56sar55(i64 %a) #0 { 24*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: shl56sar55: 25*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 26*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movsbq %dil, %rax 27*9880d681SAndroid Build Coastguard Worker %1 = shl i64 %a, 56 28*9880d681SAndroid Build Coastguard Worker %2 = ashr exact i64 %1, 55 29*9880d681SAndroid Build Coastguard Worker %3 = trunc i64 %2 to i32 30*9880d681SAndroid Build Coastguard Worker ret i32 %3 31*9880d681SAndroid Build Coastguard Worker} 32*9880d681SAndroid Build Coastguard Worker 33*9880d681SAndroid Build Coastguard Workerdefine i32 @shl56sar57(i64 %a) #0 { 34*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: shl56sar57: 35*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 36*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movsbq %dil, %rax 37*9880d681SAndroid Build Coastguard Worker %1 = shl i64 %a, 56 38*9880d681SAndroid Build Coastguard Worker %2 = ashr exact i64 %1, 57 39*9880d681SAndroid Build Coastguard Worker %3 = trunc i64 %2 to i32 40*9880d681SAndroid Build Coastguard Worker ret i32 %3 41*9880d681SAndroid Build Coastguard Worker} 42*9880d681SAndroid Build Coastguard Worker 43*9880d681SAndroid Build Coastguard Workerattributes #0 = { nounwind } 44