; Test that multiple select statements using the same condition are expanded
; into a single conditional branch when possible.
;
; RUN: llc < %s -mtriple=s390x-linux-gnu -disable-block-placement | FileCheck %s

define void @test0(i32 signext %positive, double %base, double %offset, ptr %rmin, ptr %rmax) {
entry:
; CHECK-LABEL: test0
; CHECK: cijlh %r2, 0,
; CHECK-NOT: cij
; CHECK-NOT: je
; CHECK-NOT: jlh

  %tobool = icmp eq i32 %positive, 0
  %add = fadd double %base, %offset
  %min = select i1 %tobool, double %add, double %base
  %max = select i1 %tobool, double %base, double %add
  store double %min, ptr %rmin, align 8
  store double %max, ptr %rmax, align 8
  ret void
}

; Two selects with an intervening instruction that doesn't clobber CC can
; still be merged.
define double @test1(i32 signext %positive, double %A, double %B, double %C) {
entry:
; CHECK-LABEL: test1
; CHECK: cijhe {{.*}}LBB1_2
; CHECK-NOT: cij
; CHECK: br %r14

  %tobool = icmp slt i32 %positive, 0
  %s1  = select i1 %tobool, double %A, double %B
  %mul = fmul double %A, %B
  %s2  = select i1 %tobool, double %B, double %C
  %add = fadd double %s1, %s2
  %add2 = fadd double %add, %mul
  ret double %add2
}

; Two selects with an intervening user of the first select can't be merged.
define double @test2(i32 signext %positive, double %A, double %B) {
entry:
; CHECK-LABEL: test2
; CHECK: cije {{.*}}LBB2_2
; CHECK: cibe {{.*}}%r14
; CHECK: br %r14

  %tobool = icmp eq i32 %positive, 0
  %s1  = select i1 %tobool, double %A, double %B
  %add = fadd double %A, %s1
  %s2  = select i1 %tobool, double %A, double %add
  ret double %s2
}

; Two selects with different conditions can't be merged
define double @test3(i32 signext %positive, double %A, double %B, double %C) {
entry:
; CHECK-LABEL: test3
; CHECK: cijl {{.*}}LBB3_2
; CHECK: cijl {{.*}}LBB3_4
; CHECK: br %r14

  %tobool = icmp slt i32 %positive, 0
  %s1  = select i1 %tobool, double %A, double %B
  %tobool2 = icmp slt i32 %positive, 2
  %s2  = select i1 %tobool2, double %B, double %C
  %add = fadd double %s1, %s2
  ret double %add
}
