1 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown | FileCheck %s
3 define i32 @shl48sar47(i64 %a) #0 {
4 ; CHECK-LABEL: shl48sar47:
6 ; CHECK-NEXT: movswq %di, %rax
8 %2 = ashr exact i64 %1, 47
9 %3 = trunc i64 %2 to i32
13 define i32 @shl48sar49(i64 %a) #0 {
14 ; CHECK-LABEL: shl48sar49:
16 ; CHECK-NEXT: movswq %di, %rax
18 %2 = ashr exact i64 %1, 49
19 %3 = trunc i64 %2 to i32
23 define i32 @shl56sar55(i64 %a) #0 {
24 ; CHECK-LABEL: shl56sar55:
26 ; CHECK-NEXT: movsbq %dil, %rax
28 %2 = ashr exact i64 %1, 55
29 %3 = trunc i64 %2 to i32
33 define i32 @shl56sar57(i64 %a) #0 {
34 ; CHECK-LABEL: shl56sar57:
36 ; CHECK-NEXT: movsbq %dil, %rax
38 %2 = ashr exact i64 %1, 57
39 %3 = trunc i64 %2 to i32
43 attributes #0 = { nounwind }