[InstCombine] Signed saturation patterns
[llvm-complete.git] / test / CodeGen / X86 / mul64.ll
blob1feed4b207a239ce7b937e1203e8851487e11590
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc < %s -mtriple=i386-unknown | FileCheck %s --check-prefix=X32
3 ; RUN: llc < %s -mtriple=x86_64-unknown | FileCheck %s --check-prefix=X64
5 define i64 @foo(i64 %t, i64 %u) nounwind {
6 ; X32-LABEL: foo:
7 ; X32:       # %bb.0:
8 ; X32-NEXT:    pushl %esi
9 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
10 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %esi
11 ; X32-NEXT:    movl %ecx, %eax
12 ; X32-NEXT:    mull %esi
13 ; X32-NEXT:    imull {{[0-9]+}}(%esp), %ecx
14 ; X32-NEXT:    addl %ecx, %edx
15 ; X32-NEXT:    imull {{[0-9]+}}(%esp), %esi
16 ; X32-NEXT:    addl %esi, %edx
17 ; X32-NEXT:    popl %esi
18 ; X32-NEXT:    retl
20 ; X64-LABEL: foo:
21 ; X64:       # %bb.0:
22 ; X64-NEXT:    movq %rdi, %rax
23 ; X64-NEXT:    imulq %rsi, %rax
24 ; X64-NEXT:    retq
25   %k = mul i64 %t, %u
26   ret i64 %k