Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / llvm / test / CodeGen / X86 / sar_fold.ll
blob21655e19440afeecd94b11351a1e5ae55b586e41
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc < %s -mtriple=i686-unknown-unknown | FileCheck %s
4 define i32 @shl16sar15(i32 %a) #0 {
5 ; CHECK-LABEL: shl16sar15:
6 ; CHECK:       # %bb.0:
7 ; CHECK-NEXT:    movswl {{[0-9]+}}(%esp), %eax
8 ; CHECK-NEXT:    addl %eax, %eax
9 ; CHECK-NEXT:    retl
10   %1 = shl i32 %a, 16
11   %2 = ashr exact i32 %1, 15
12   ret i32 %2
15 define i32 @shl16sar17(i32 %a) #0 {
16 ; CHECK-LABEL: shl16sar17:
17 ; CHECK:       # %bb.0:
18 ; CHECK-NEXT:    movswl {{[0-9]+}}(%esp), %eax
19 ; CHECK-NEXT:    sarl %eax
20 ; CHECK-NEXT:    retl
21   %1 = shl i32 %a, 16
22   %2 = ashr exact i32 %1, 17
23   ret i32 %2
26 define i32 @shl24sar23(i32 %a) #0 {
27 ; CHECK-LABEL: shl24sar23:
28 ; CHECK:       # %bb.0:
29 ; CHECK-NEXT:    movsbl {{[0-9]+}}(%esp), %eax
30 ; CHECK-NEXT:    addl %eax, %eax
31 ; CHECK-NEXT:    retl
32   %1 = shl i32 %a, 24
33   %2 = ashr exact i32 %1, 23
34   ret i32 %2
37 define i32 @shl24sar25(i32 %a) #0 {
38 ; CHECK-LABEL: shl24sar25:
39 ; CHECK:       # %bb.0:
40 ; CHECK-NEXT:    movsbl {{[0-9]+}}(%esp), %eax
41 ; CHECK-NEXT:    sarl %eax
42 ; CHECK-NEXT:    retl
43   %1 = shl i32 %a, 24
44   %2 = ashr exact i32 %1, 25
45   ret i32 %2