88 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=i686-unknown-unknown | FileCheck %s3 4define i32 @shl16sar15(i32 %a) #0 {5; CHECK-LABEL: shl16sar15:6; CHECK: # %bb.0:7; CHECK-NEXT: movswl {{[0-9]+}}(%esp), %eax8; CHECK-NEXT: addl %eax, %eax9; CHECK-NEXT: retl10 %1 = shl i32 %a, 1611 %2 = ashr exact i32 %1, 1512 ret i32 %213}14 15define i32 @shl16sar17(i32 %a) #0 {16; CHECK-LABEL: shl16sar17:17; CHECK: # %bb.0:18; CHECK-NEXT: movswl {{[0-9]+}}(%esp), %eax19; CHECK-NEXT: sarl %eax20; CHECK-NEXT: retl21 %1 = shl i32 %a, 1622 %2 = ashr exact i32 %1, 1723 ret i32 %224}25 26define i32 @shl24sar23(i32 %a) #0 {27; CHECK-LABEL: shl24sar23:28; CHECK: # %bb.0:29; CHECK-NEXT: movsbl {{[0-9]+}}(%esp), %eax30; CHECK-NEXT: addl %eax, %eax31; CHECK-NEXT: retl32 %1 = shl i32 %a, 2433 %2 = ashr exact i32 %1, 2334 ret i32 %235}36 37define i32 @shl24sar25(i32 %a) #0 {38; CHECK-LABEL: shl24sar25:39; CHECK: # %bb.0:40; CHECK-NEXT: movsbl {{[0-9]+}}(%esp), %eax41; CHECK-NEXT: sarl %eax42; CHECK-NEXT: retl43 %1 = shl i32 %a, 2444 %2 = ashr exact i32 %1, 2545 ret i32 %246}47 48define void @shl144sar48(ptr %p) #0 {49; CHECK-LABEL: shl144sar48:50; CHECK: # %bb.0:51; CHECK-NEXT: movl {{[0-9]+}}(%esp), %eax52; CHECK-NEXT: movswl (%eax), %ecx53; CHECK-NEXT: movl %ecx, %edx54; CHECK-NEXT: sarl $31, %edx55; CHECK-NEXT: shldl $2, %ecx, %edx56; CHECK-NEXT: shll $2, %ecx57; CHECK-NEXT: movl %ecx, 12(%eax)58; CHECK-NEXT: movl %edx, 16(%eax)59; CHECK-NEXT: movl $0, 8(%eax)60; CHECK-NEXT: movl $0, 4(%eax)61; CHECK-NEXT: movl $0, (%eax)62; CHECK-NEXT: retl63 %a = load i160, ptr %p64 %1 = shl i160 %a, 14465 %2 = ashr exact i160 %1, 4666 store i160 %2, ptr %p67 ret void68}69 70define void @shl144sar2(ptr %p) #0 {71; CHECK-LABEL: shl144sar2:72; CHECK: # %bb.0:73; CHECK-NEXT: movl {{[0-9]+}}(%esp), %eax74; CHECK-NEXT: movswl (%eax), %ecx75; CHECK-NEXT: shll $14, %ecx76; CHECK-NEXT: movl %ecx, 16(%eax)77; CHECK-NEXT: movl $0, 8(%eax)78; CHECK-NEXT: movl $0, 12(%eax)79; CHECK-NEXT: movl $0, 4(%eax)80; CHECK-NEXT: movl $0, (%eax)81; CHECK-NEXT: retl82 %a = load i160, ptr %p83 %1 = shl i160 %a, 14484 %2 = ashr exact i160 %1, 285 store i160 %2, ptr %p86 ret void87}88