blob: fefd226d528aa1ee77947d512a371ed2386aa7d9 [file] [log] [blame]
; Simple test of non-fused compare/branch.
; RUN: %p2i --filetype=obj --disassemble -i %s --args -O2 \
; RUN: -allow-externally-defined-symbols | FileCheck %s
; RUN: %p2i --filetype=obj --disassemble -i %s --args -Om1 \
; RUN: -allow-externally-defined-symbols | FileCheck --check-prefix=OPTM1 %s
define internal void @testBool(i32 %a, i32 %b) {
entry:
%cmp = icmp slt i32 %a, %b
%cmp1 = icmp sgt i32 %a, %b
br i1 %cmp, label %if.then, label %if.end
if.then: ; preds = %entry
%cmp_ext = zext i1 %cmp to i32
tail call void @use(i32 %cmp_ext)
br label %if.end
if.end: ; preds = %if.then, %entry
br i1 %cmp1, label %if.then5, label %if.end7
if.then5: ; preds = %if.end
%cmp1_ext = zext i1 %cmp1 to i32
tail call void @use(i32 %cmp1_ext)
br label %if.end7
if.end7: ; preds = %if.then5, %if.end
ret void
}
declare void @use(i32)
; CHECK-LABEL: testBool
; Two bool computations
; CHECK: cmp
; CHECK: cmp
; Test first bool
; CHECK: cmp
; CHECK: call
; Test second bool
; CHECK: cmp
; CHECK: call
; CHECK: ret
;
; OPTM1-LABEL: testBool
; Two bool computations
; OPTM1: cmp
; OPTM1: cmp
; Test first bool
; OPTM1: cmp
; OPTM1: call
; Test second bool
; OPTM1: cmp
; OPTM1: call
; OPTM1: ret