[InstCombine] Signed saturation patterns
[llvm-complete.git] / test / CodeGen / X86 / legalize-shift.ll
blobe1c1c0ba72a0c21753302fbdafa699de3dee5c9f
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc < %s -mtriple=i686-unknown-unknown | FileCheck %s --check-prefix=X86
3 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown | FileCheck %s --check-prefix=X64
5 define void @PR36250() {
6 ; X86-LABEL: PR36250:
7 ; X86:       # %bb.0:
8 ; X86-NEXT:    movl (%eax), %eax
9 ; X86-NEXT:    movl %eax, %ecx
10 ; X86-NEXT:    roll %ecx
11 ; X86-NEXT:    addl %eax, %eax
12 ; X86-NEXT:    movl %ecx, %edx
13 ; X86-NEXT:    orl %ecx, %edx
14 ; X86-NEXT:    orl %ecx, %edx
15 ; X86-NEXT:    orl %eax, %edx
16 ; X86-NEXT:    orl %ecx, %edx
17 ; X86-NEXT:    sete (%eax)
18 ; X86-NEXT:    retl
20 ; X64-LABEL: PR36250:
21 ; X64:       # %bb.0:
22 ; X64-NEXT:    movq (%rax), %rax
23 ; X64-NEXT:    movq %rax, %rcx
24 ; X64-NEXT:    rolq %rcx
25 ; X64-NEXT:    addq %rax, %rax
26 ; X64-NEXT:    movq %rcx, %rdx
27 ; X64-NEXT:    orq %rcx, %rdx
28 ; X64-NEXT:    orq %rax, %rdx
29 ; X64-NEXT:    orq %rcx, %rdx
30 ; X64-NEXT:    sete (%rax)
31 ; X64-NEXT:    retq
32    %1 = load i448, i448* undef
33    %2 = sub i448 0, %1
34    %3 = icmp eq i448 %1, %2
35    store i1 %3, i1* undef
36    ret void