Home | History | Annotate | Download | only in X86
      1 ; RUN: llc -mcpu=generic -march=x86 < %s | FileCheck %s
      2 ; PR19858
      3 
      4 declare {i8, i1} @llvm.umul.with.overflow.i8(i8 %a, i8 %b)
      5 define i8 @testumulo(i32 %argc) {
      6 ; CHECK: imulw
      7 ; CHECK: testb %{{.+}}, %{{.+}}
      8 ; CHECK: je [[NOOVERFLOWLABEL:.+]]
      9 ; CHECK: {{.*}}[[NOOVERFLOWLABEL]]:
     10 ; CHECK-NEXT: movb
     11 ; CHECK-NEXT: retl
     12 top:
     13   %RHS = trunc i32 %argc to i8
     14   %umul = call { i8, i1 } @llvm.umul.with.overflow.i8(i8 25, i8 %RHS)
     15   %ex = extractvalue { i8, i1 } %umul, 1
     16   br i1 %ex, label %overflow, label %nooverlow
     17 
     18 overflow:
     19   ret i8 %RHS
     20 
     21 nooverlow:
     22   %umul.value = extractvalue { i8, i1 } %umul, 0
     23   ret i8 %umul.value
     24 }
     25