Compiler projects using llvm
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu -O2 \
; RUN:     -ppc-asm-full-reg-names -mcpu=pwr10 < %s | FileCheck %s
; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
; RUN:     -ppc-asm-full-reg-names -mcpu=pwr10 < %s | FileCheck %s

; Function Attrs: norecurse nounwind readnone
define signext i32 @setbc(float %a, float %b) {
; CHECK-LABEL: setbc:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    setbc r3, lt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp olt float %a, %b
  %conv = zext i1 %cmp to i32
  ret i32 %conv
}

; Function Attrs: norecurse nounwind readnone
define signext i32 @setnbc(float %a, float %b) {
; CHECK-LABEL: setnbc:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    setnbc r3, lt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp olt float %a, %b
  %sub = sext i1 %cmp to i32
  ret i32 %sub
}

; Function Attrs: norecurse nounwind readnone
define signext i32 @setbcr(float %a, float %b) {
; CHECK-LABEL: setbcr:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    setbcr r3, lt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp uge float %a, %b
  %lnot.ext = zext i1 %cmp to i32
  ret i32 %lnot.ext
}

; Function Attrs: norecurse nounwind readnone
define signext i32 @setnbcr(float %a, float %b) {
; CHECK-LABEL: setnbcr:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    setnbcr r3, lt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp uge float %a, %b
  %sub = sext i1 %cmp to i32
  ret i32 %sub
}

; Function Attrs: norecurse nounwind readnone
define signext i64 @setbc2(float %a, float %b) {
; CHECK-LABEL: setbc2:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    setbc r3, lt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp olt float %a, %b
  %conv = zext i1 %cmp to i64
  ret i64 %conv
}

; Function Attrs: norecurse nounwind readnone
define signext i64 @setnbc2(float %a, float %b) {
; CHECK-LABEL: setnbc2:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    setnbc r3, lt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp olt float %a, %b
  %sub = sext i1 %cmp to i64
  ret i64 %sub
}

; Function Attrs: norecurse nounwind readnone
define signext i64 @setbcr2(float %a, float %b) {
; CHECK-LABEL: setbcr2:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    setbcr r3, lt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp uge float %a, %b
  %lnot.ext = zext i1 %cmp to i64
  ret i64 %lnot.ext
}

; Function Attrs: norecurse nounwind readnone
define signext i64 @setnbcr2(float %a, float %b) {
; CHECK-LABEL: setnbcr2:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    setnbcr r3, lt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp uge float %a, %b
  %sub = sext i1 %cmp to i64
  ret i64 %sub
}

; Function Attrs: norecurse nounwind readnone
define signext i64 @setbc3(double %a, double %b) {
; CHECK-LABEL: setbc3:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    setbc r3, lt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp olt double %a, %b
  %conv = zext i1 %cmp to i64
  ret i64 %conv
}

; Function Attrs: norecurse nounwind readnone
define signext i64 @setnbc3(double %a, double %b) {
; CHECK-LABEL: setnbc3:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    setnbc r3, lt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp olt double %a, %b
  %sub = sext i1 %cmp to i64
  ret i64 %sub
}

; Function Attrs: norecurse nounwind readnone
define signext i64 @setbcr3(double %a, double %b) {
; CHECK-LABEL: setbcr3:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    setbcr r3, lt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp uge double %a, %b
  %lnot.ext = zext i1 %cmp to i64
  ret i64 %lnot.ext
}

; Function Attrs: norecurse nounwind readnone
define signext i64 @setnbcr3(double %a, double %b) {
; CHECK-LABEL: setnbcr3:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    setnbcr r3, lt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp uge double %a, %b
  %sub = sext i1 %cmp to i64
  ret i64 %sub
}

; Function Attrs: norecurse nounwind readnone
define signext i32 @setbc4(double %a, double %b) {
; CHECK-LABEL: setbc4:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    setbc r3, lt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp olt double %a, %b
  %conv = zext i1 %cmp to i32
  ret i32 %conv
}

; Function Attrs: norecurse nounwind readnone
define signext i32 @setnbc4(double %a, double %b) {
; CHECK-LABEL: setnbc4:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    setnbc r3, lt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp olt double %a, %b
  %sub = sext i1 %cmp to i32
  ret i32 %sub
}

; Function Attrs: norecurse nounwind readnone
define signext i32 @setbcr4(double %a, double %b) {
; CHECK-LABEL: setbcr4:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    setbcr r3, lt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp uge double %a, %b
  %lnot.ext = zext i1 %cmp to i32
  ret i32 %lnot.ext
}

; Function Attrs: norecurse nounwind readnone
define signext i32 @setnbcr4(double %a, double %b) {
; CHECK-LABEL: setnbcr4:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    setnbcr r3, lt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp uge double %a, %b
  %sub = sext i1 %cmp to i32
  ret i32 %sub
}


; Function Attrs: norecurse nounwind readnone
define signext i32 @setbc5(float %a, float %b) {
; CHECK-LABEL: setbc5:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    setbc r3, gt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp ogt float %a, %b
  %conv = zext i1 %cmp to i32
  ret i32 %conv
}

; Function Attrs: norecurse nounwind readnone
define signext i32 @setnbc5(float %a, float %b) {
; CHECK-LABEL: setnbc5:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    setnbc r3, gt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp ogt float %a, %b
  %sub = sext i1 %cmp to i32
  ret i32 %sub
}

; Function Attrs: norecurse nounwind readnone
define signext i32 @setbcr5(float %a, float %b) {
; CHECK-LABEL: setbcr5:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    setbcr r3, gt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp ule float %a, %b
  %lnot.ext = zext i1 %cmp to i32
  ret i32 %lnot.ext
}

; Function Attrs: norecurse nounwind readnone
define signext i32 @setnbcr5(float %a, float %b) {
; CHECK-LABEL: setnbcr5:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    setnbcr r3, gt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp ule float %a, %b
  %sub = sext i1 %cmp to i32
  ret i32 %sub
}

; Function Attrs: norecurse nounwind readnone
define signext i32 @setbc6(double %a, double %b) {
; CHECK-LABEL: setbc6:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    setbc r3, gt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp ogt double %a, %b
  %conv = zext i1 %cmp to i32
  ret i32 %conv
}

; Function Attrs: norecurse nounwind readnone
define signext i32 @setnbc6(double %a, double %b) {
; CHECK-LABEL: setnbc6:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    setnbc r3, gt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp ogt double %a, %b
  %sub = sext i1 %cmp to i32
  ret i32 %sub
}

; Function Attrs: norecurse nounwind readnone
define signext i32 @setbcr6(double %a, double %b) {
; CHECK-LABEL: setbcr6:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    setbcr r3, gt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp ule double %a, %b
  %lnot.ext = zext i1 %cmp to i32
  ret i32 %lnot.ext
}

; Function Attrs: norecurse nounwind readnone
define signext i32 @setnbcr6(double %a, double %b) {
; CHECK-LABEL: setnbcr6:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    setnbcr r3, gt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp ule double %a, %b
  %sub = sext i1 %cmp to i32
  ret i32 %sub
}

; Function Attrs: norecurse nounwind readnone
define signext i64 @setbc7(float %a, float %b) {
; CHECK-LABEL: setbc7:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    setbc r3, gt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp ogt float %a, %b
  %conv = zext i1 %cmp to i64
  ret i64 %conv
}

; Function Attrs: norecurse nounwind readnone
define signext i64 @setnbc7(float %a, float %b) {
; CHECK-LABEL: setnbc7:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    setnbc r3, gt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp ogt float %a, %b
  %sub = sext i1 %cmp to i64
  ret i64 %sub
}

; Function Attrs: norecurse nounwind readnone
define signext i64 @setbcr7(float %a, float %b) {
; CHECK-LABEL: setbcr7:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    setbcr r3, gt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp ule float %a, %b
  %lnot.ext = zext i1 %cmp to i64
  ret i64 %lnot.ext
}

; Function Attrs: norecurse nounwind readnone
define signext i64 @setnbcr7(float %a, float %b) {
; CHECK-LABEL: setnbcr7:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    setnbcr r3, gt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp ule float %a, %b
  %sub = sext i1 %cmp to i64
  ret i64 %sub
}

; Function Attrs: norecurse nounwind readnone
define signext i64 @setbc8(double %a, double %b) {
; CHECK-LABEL: setbc8:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    setbc r3, gt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp ogt double %a, %b
  %conv = zext i1 %cmp to i64
  ret i64 %conv
}

; Function Attrs: norecurse nounwind readnone
define signext i64 @setnbc8(double %a, double %b) {
; CHECK-LABEL: setnbc8:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    setnbc r3, gt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp ogt double %a, %b
  %sub = sext i1 %cmp to i64
  ret i64 %sub
}

; Function Attrs: norecurse nounwind readnone
define signext i64 @setbcr8(double %a, double %b) {
; CHECK-LABEL: setbcr8:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    setbcr r3, gt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp ule double %a, %b
  %lnot.ext = zext i1 %cmp to i64
  ret i64 %lnot.ext
}

; Function Attrs: norecurse nounwind readnone
define signext i64 @setnbcr8(double %a, double %b) {
; CHECK-LABEL: setnbcr8:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    setnbcr r3, gt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp ule double %a, %b
  %sub = sext i1 %cmp to i64
  ret i64 %sub
}

; Function Attrs: norecurse nounwind readnone
define signext i32 @setbc9(float %a, float %b) {
; CHECK-LABEL: setbc9:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    setbc r3, eq
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp oeq float %a, %b
  %conv = zext i1 %cmp to i32
  ret i32 %conv
}

; Function Attrs: norecurse nounwind readnone
define signext i32 @setnbc9(float %a, float %b) {
; CHECK-LABEL: setnbc9:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    setnbc r3, eq
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp oeq float %a, %b
  %sub = sext i1 %cmp to i32
  ret i32 %sub
}

; Function Attrs: norecurse nounwind readnone
define signext i32 @setbcr9(float %a, float %b) {
; CHECK-LABEL: setbcr9:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    setbcr r3, eq
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp une float %a, %b
  %lnot.ext = zext i1 %cmp to i32
  ret i32 %lnot.ext
}

; Function Attrs: norecurse nounwind readnone
define signext i32 @setnbcr9(float %a, float %b) {
; CHECK-LABEL: setnbcr9:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    setnbcr r3, eq
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp une float %a, %b
  %sub = sext i1 %cmp to i32
  ret i32 %sub
}

; Function Attrs: norecurse nounwind readnone
define signext i32 @setbc10(double %a, double %b) {
; CHECK-LABEL: setbc10:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    setbc r3, eq
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp oeq double %a, %b
  %conv = zext i1 %cmp to i32
  ret i32 %conv
}

; Function Attrs: norecurse nounwind readnone
define signext i32 @setnbc10(double %a, double %b) {
; CHECK-LABEL: setnbc10:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    setnbc r3, eq
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp oeq double %a, %b
  %sub = sext i1 %cmp to i32
  ret i32 %sub
}

; Function Attrs: norecurse nounwind readnone
define signext i32 @setbcr10(double %a, double %b) {
; CHECK-LABEL: setbcr10:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    setbcr r3, eq
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp une double %a, %b
  %lnot.ext = zext i1 %cmp to i32
  ret i32 %lnot.ext
}

; Function Attrs: norecurse nounwind readnone
define signext i32 @setnbcr10(double %a, double %b) {
; CHECK-LABEL: setnbcr10:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    setnbcr r3, eq
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp une double %a, %b
  %sub = sext i1 %cmp to i32
  ret i32 %sub
}

; Function Attrs: norecurse nounwind readnone
define signext i64 @setbc11(float %a, float %b) {
; CHECK-LABEL: setbc11:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    setbc r3, eq
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp oeq float %a, %b
  %conv = zext i1 %cmp to i64
  ret i64 %conv
}

; Function Attrs: norecurse nounwind readnone
define signext i64 @setnbc11(float %a, float %b) {
; CHECK-LABEL: setnbc11:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    setnbc r3, eq
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp oeq float %a, %b
  %sub = sext i1 %cmp to i64
  ret i64 %sub
}

; Function Attrs: norecurse nounwind readnone
define signext i64 @setbcr11(float %a, float %b) {
; CHECK-LABEL: setbcr11:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    setbcr r3, eq
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp une float %a, %b
  %lnot.ext = zext i1 %cmp to i64
  ret i64 %lnot.ext
}

; Function Attrs: norecurse nounwind readnone
define signext i64 @setnbcr11(float %a, float %b) {
; CHECK-LABEL: setnbcr11:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    setnbcr r3, eq
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp une float %a, %b
  %sub = sext i1 %cmp to i64
  ret i64 %sub
}

; Function Attrs: norecurse nounwind readnone
define signext i64 @setbc12(double %a, double %b) {
; CHECK-LABEL: setbc12:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    setbc r3, eq
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp oeq double %a, %b
  %conv = zext i1 %cmp to i64
  ret i64 %conv
}

; Function Attrs: norecurse nounwind readnone
define signext i64 @setnbc12(double %a, double %b) {
; CHECK-LABEL: setnbc12:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    setnbc r3, eq
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp oeq double %a, %b
  %sub = sext i1 %cmp to i64
  ret i64 %sub
}

; Function Attrs: norecurse nounwind readnone
define signext i64 @setbcr12(double %a, double %b) {
; CHECK-LABEL: setbcr12:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    setbcr r3, eq
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp une double %a, %b
  %lnot.ext = zext i1 %cmp to i64
  ret i64 %lnot.ext
}

; Function Attrs: norecurse nounwind readnone
define signext i64 @setnbcr12(double %a, double %b) {
; CHECK-LABEL: setnbcr12:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    setnbcr r3, eq
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp une double %a, %b
  %sub = sext i1 %cmp to i64
  ret i64 %sub
}

; Function Attrs: norecurse nounwind readnone
define signext i32 @setbc13(float %a, float %b) {
; CHECK-LABEL: setbc13:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    setbc r3, un
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp uno float %a, %b
  %conv = zext i1 %cmp to i32
  ret i32 %conv
}

; Function Attrs: norecurse nounwind readnone
define signext i32 @setnbc13(float %a, float %b) {
; CHECK-LABEL: setnbc13:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    setnbc r3, un
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp uno float %a, %b
  %sub = sext i1 %cmp to i32
  ret i32 %sub
}

; Function Attrs: norecurse nounwind readnone
define signext i32 @setbcr13(float %a, float %b) {
; CHECK-LABEL: setbcr13:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    setbcr r3, un
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp ord float %a, %b
  %lnot.ext = zext i1 %cmp to i32
  ret i32 %lnot.ext
}

; Function Attrs: norecurse nounwind readnone
define signext i32 @setnbcr13(float %a, float %b) {
; CHECK-LABEL: setnbcr13:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    setnbcr r3, un
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp ord float %a, %b
  %sub = sext i1 %cmp to i32
  ret i32 %sub
}

; Function Attrs: norecurse nounwind readnone
define signext i32 @setbc14(double %a, double %b) {
; CHECK-LABEL: setbc14:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    setbc r3, un
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp uno double %a, %b
  %conv = zext i1 %cmp to i32
  ret i32 %conv
}

; Function Attrs: norecurse nounwind readnone
define signext i32 @setnbc14(double %a, double %b) {
; CHECK-LABEL: setnbc14:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    setnbc r3, un
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp uno double %a, %b
  %sub = sext i1 %cmp to i32
  ret i32 %sub
}

; Function Attrs: norecurse nounwind readnone
define signext i32 @setbcr14(double %a, double %b) {
; CHECK-LABEL: setbcr14:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    setbcr r3, un
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp ord double %a, %b
  %lnot.ext = zext i1 %cmp to i32
  ret i32 %lnot.ext
}

; Function Attrs: norecurse nounwind readnone
define signext i32 @setnbcr14(double %a, double %b) {
; CHECK-LABEL: setnbcr14:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    setnbcr r3, un
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp ord double %a, %b
  %sub = sext i1 %cmp to i32
  ret i32 %sub
}

; Function Attrs: norecurse nounwind readnone
define signext i64 @setbc15(float %a, float %b) {
; CHECK-LABEL: setbc15:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    setbc r3, un
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp uno float %a, %b
  %conv = zext i1 %cmp to i64
  ret i64 %conv
}

; Function Attrs: norecurse nounwind readnone
define signext i64 @setnbc15(float %a, float %b) {
; CHECK-LABEL: setnbc15:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    setnbc r3, un
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp uno float %a, %b
  %sub = sext i1 %cmp to i64
  ret i64 %sub
}

; Function Attrs: norecurse nounwind readnone
define signext i64 @setbcr15(float %a, float %b) {
; CHECK-LABEL: setbcr15:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    setbcr r3, un
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp ord float %a, %b
  %lnot.ext = zext i1 %cmp to i64
  ret i64 %lnot.ext
}

; Function Attrs: norecurse nounwind readnone
define signext i64 @setnbcr15(float %a, float %b) {
; CHECK-LABEL: setnbcr15:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    setnbcr r3, un
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp ord float %a, %b
  %sub = sext i1 %cmp to i64
  ret i64 %sub
}

; Function Attrs: norecurse nounwind readnone
define signext i64 @setbc16(double %a, double %b) {
; CHECK-LABEL: setbc16:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    setbc r3, un
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp uno double %a, %b
  %conv = zext i1 %cmp to i64
  ret i64 %conv
}

; Function Attrs: norecurse nounwind readnone
define signext i64 @setnbc16(double %a, double %b) {
; CHECK-LABEL: setnbc16:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    setnbc r3, un
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp uno double %a, %b
  %sub = sext i1 %cmp to i64
  ret i64 %sub
}

; Function Attrs: norecurse nounwind readnone
define signext i64 @setbcr16(double %a, double %b) {
; CHECK-LABEL: setbcr16:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    setbcr r3, un
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp ord double %a, %b
  %lnot.ext = zext i1 %cmp to i64
  ret i64 %lnot.ext
}

; Function Attrs: norecurse nounwind readnone
define signext i64 @setnbcr16(double %a, double %b) {
; CHECK-LABEL: setnbcr16:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    setnbcr r3, un
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp ord double %a, %b
  %sub = sext i1 %cmp to i64
  ret i64 %sub
}

define signext i32 @setbc17(float %a, float %b) {
; CHECK-LABEL: setbc17:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    cror 4*cr5+lt, lt, un
; CHECK-NEXT:    setbc r3, 4*cr5+lt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp ult float %a, %b
  %conv = zext i1 %cmp to i32
  ret i32 %conv
}

define signext i32 @setnbc17(float %a, float %b) {
; CHECK-LABEL: setnbc17:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    cror 4*cr5+lt, lt, un
; CHECK-NEXT:    setnbc r3, 4*cr5+lt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp ult float %a, %b
  %conv = sext i1 %cmp to i32
  ret i32 %conv
}

define signext i32 @setbc18(double %a, double %b) {
; CHECK-LABEL: setbc18:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    cror 4*cr5+lt, lt, un
; CHECK-NEXT:    setbc r3, 4*cr5+lt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp ult double %a, %b
  %conv = zext i1 %cmp to i32
  ret i32 %conv
}

define signext i32 @setnbc18(double %a, double %b) {
; CHECK-LABEL: setnbc18:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    cror 4*cr5+lt, lt, un
; CHECK-NEXT:    setnbc r3, 4*cr5+lt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp ult double %a, %b
  %conv = sext i1 %cmp to i32
  ret i32 %conv
}

define signext i64 @setbc19(float %a, float %b) {
; CHECK-LABEL: setbc19:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    cror 4*cr5+lt, lt, un
; CHECK-NEXT:    setbc r3, 4*cr5+lt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp ult float %a, %b
  %conv = zext i1 %cmp to i64
  ret i64 %conv
}

define signext i64 @setnbc19(float %a, float %b) {
; CHECK-LABEL: setnbc19:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    cror 4*cr5+lt, lt, un
; CHECK-NEXT:    setnbc r3, 4*cr5+lt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp ult float %a, %b
  %conv = sext i1 %cmp to i64
  ret i64 %conv
}

define signext i64 @setbc20(double %a, double %b) {
; CHECK-LABEL: setbc20:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    cror 4*cr5+lt, lt, un
; CHECK-NEXT:    setbc r3, 4*cr5+lt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp ult double %a, %b
  %conv = zext i1 %cmp to i64
  ret i64 %conv
}

define signext i64 @setnbc20(double %a, double %b) {
; CHECK-LABEL: setnbc20:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    cror 4*cr5+lt, lt, un
; CHECK-NEXT:    setnbc r3, 4*cr5+lt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp ult double %a, %b
  %conv = sext i1 %cmp to i64
  ret i64 %conv
}

define signext i32 @setbc21(float %a, float %b) {
; CHECK-LABEL: setbc21:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    crnor 4*cr5+lt, un, lt
; CHECK-NEXT:    setbc r3, 4*cr5+lt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp oge float %a, %b
  %conv = zext i1 %cmp to i32
  ret i32 %conv
}

define signext i32 @setnbc21(float %a, float %b) {
; CHECK-LABEL: setnbc21:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    crnor 4*cr5+lt, un, lt
; CHECK-NEXT:    setnbc r3, 4*cr5+lt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp oge float %a, %b
  %conv = sext i1 %cmp to i32
  ret i32 %conv
}

define signext i32 @setbc22(double %a, double %b) {
; CHECK-LABEL: setbc22:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    crnor 4*cr5+lt, un, lt
; CHECK-NEXT:    setbc r3, 4*cr5+lt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp oge double %a, %b
  %conv = zext i1 %cmp to i32
  ret i32 %conv
}

define signext i32 @setnbc22(double %a, double %b) {
; CHECK-LABEL: setnbc22:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    crnor 4*cr5+lt, un, lt
; CHECK-NEXT:    setnbc r3, 4*cr5+lt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp oge double %a, %b
  %conv = sext i1 %cmp to i32
  ret i32 %conv
}

define signext i64 @setbc23(float %a, float %b) {
; CHECK-LABEL: setbc23:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    crnor 4*cr5+lt, un, lt
; CHECK-NEXT:    setbc r3, 4*cr5+lt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp oge float %a, %b
  %conv = zext i1 %cmp to i64
  ret i64 %conv
}

define signext i64 @setnbc23(float %a, float %b) {
; CHECK-LABEL: setnbc23:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    crnor 4*cr5+lt, un, lt
; CHECK-NEXT:    setnbc r3, 4*cr5+lt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp oge float %a, %b
  %conv = sext i1 %cmp to i64
  ret i64 %conv
}

define signext i64 @setbc24(double %a, double %b) {
; CHECK-LABEL: setbc24:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    crnor 4*cr5+lt, un, lt
; CHECK-NEXT:    setbc r3, 4*cr5+lt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp oge double %a, %b
  %conv = zext i1 %cmp to i64
  ret i64 %conv
}

define signext i64 @setnbc24(double %a, double %b) {
; CHECK-LABEL: setnbc24:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    crnor 4*cr5+lt, un, lt
; CHECK-NEXT:    setnbc r3, 4*cr5+lt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp oge double %a, %b
  %conv = sext i1 %cmp to i64
  ret i64 %conv
}

define signext i32 @setbc25(float %a, float %b) {
; CHECK-LABEL: setbc25:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    crnor 4*cr5+lt, un, gt
; CHECK-NEXT:    setbc r3, 4*cr5+lt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp ole float %a, %b
  %conv = zext i1 %cmp to i32
  ret i32 %conv
}

define signext i32 @setnbc25(float %a, float %b) {
; CHECK-LABEL: setnbc25:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    crnor 4*cr5+lt, un, gt
; CHECK-NEXT:    setnbc r3, 4*cr5+lt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp ole float %a, %b
  %conv = sext i1 %cmp to i32
  ret i32 %conv
}

define signext i32 @setbc26(double %a, double %b) {
; CHECK-LABEL: setbc26:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    crnor 4*cr5+lt, un, gt
; CHECK-NEXT:    setbc r3, 4*cr5+lt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp ole double %a, %b
  %conv = zext i1 %cmp to i32
  ret i32 %conv
}

define signext i32 @setnbc26(double %a, double %b) {
; CHECK-LABEL: setnbc26:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    crnor 4*cr5+lt, un, gt
; CHECK-NEXT:    setnbc r3, 4*cr5+lt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp ole double %a, %b
  %conv = sext i1 %cmp to i32
  ret i32 %conv
}

define signext i64 @setbc27(float %a, float %b) {
; CHECK-LABEL: setbc27:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    crnor 4*cr5+lt, un, gt
; CHECK-NEXT:    setbc r3, 4*cr5+lt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp ole float %a, %b
  %conv = zext i1 %cmp to i64
  ret i64 %conv
}

define signext i64 @setnbc27(float %a, float %b) {
; CHECK-LABEL: setnbc27:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    crnor 4*cr5+lt, un, gt
; CHECK-NEXT:    setnbc r3, 4*cr5+lt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp ole float %a, %b
  %conv = sext i1 %cmp to i64
  ret i64 %conv
}

define signext i64 @setbc28(double %a, double %b) {
; CHECK-LABEL: setbc28:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    crnor 4*cr5+lt, un, gt
; CHECK-NEXT:    setbc r3, 4*cr5+lt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp ole double %a, %b
  %conv = zext i1 %cmp to i64
  ret i64 %conv
}

define signext i64 @setnbc28(double %a, double %b) {
; CHECK-LABEL: setnbc28:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    crnor 4*cr5+lt, un, gt
; CHECK-NEXT:    setnbc r3, 4*cr5+lt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp ole double %a, %b
  %conv = sext i1 %cmp to i64
  ret i64 %conv
}

define signext i32 @setbc29(float %a, float %b) {
; CHECK-LABEL: setbc29:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    cror 4*cr5+lt, gt, un
; CHECK-NEXT:    setbc r3, 4*cr5+lt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp ugt float %a, %b
  %conv = zext i1 %cmp to i32
  ret i32 %conv
}

define signext i32 @setnbc29(float %a, float %b) {
; CHECK-LABEL: setnbc29:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    cror 4*cr5+lt, gt, un
; CHECK-NEXT:    setnbc r3, 4*cr5+lt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp ugt float %a, %b
  %conv = sext i1 %cmp to i32
  ret i32 %conv
}

define signext i32 @setbc30(double %a, double %b) {
; CHECK-LABEL: setbc30:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    cror 4*cr5+lt, gt, un
; CHECK-NEXT:    setbc r3, 4*cr5+lt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp ugt double %a, %b
  %conv = zext i1 %cmp to i32
  ret i32 %conv
}

define signext i32 @setnbc30(double %a, double %b) {
; CHECK-LABEL: setnbc30:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    cror 4*cr5+lt, gt, un
; CHECK-NEXT:    setnbc r3, 4*cr5+lt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp ugt double %a, %b
  %conv = sext i1 %cmp to i32
  ret i32 %conv
}

define signext i64 @setbc31(float %a, float %b) {
; CHECK-LABEL: setbc31:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    cror 4*cr5+lt, gt, un
; CHECK-NEXT:    setbc r3, 4*cr5+lt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp ugt float %a, %b
  %conv = zext i1 %cmp to i64
  ret i64 %conv
}

define signext i64 @setnbc31(float %a, float %b) {
; CHECK-LABEL: setnbc31:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    cror 4*cr5+lt, gt, un
; CHECK-NEXT:    setnbc r3, 4*cr5+lt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp ugt float %a, %b
  %conv = sext i1 %cmp to i64
  ret i64 %conv
}

define signext i64 @setbc32(double %a, double %b) {
; CHECK-LABEL: setbc32:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    cror 4*cr5+lt, gt, un
; CHECK-NEXT:    setbc r3, 4*cr5+lt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp ugt double %a, %b
  %conv = zext i1 %cmp to i64
  ret i64 %conv
}

define signext i64 @setnbc32(double %a, double %b) {
; CHECK-LABEL: setnbc32:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    cror 4*cr5+lt, gt, un
; CHECK-NEXT:    setnbc r3, 4*cr5+lt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp ugt double %a, %b
  %conv = sext i1 %cmp to i64
  ret i64 %conv
}

define signext i32 @setbc33(float %a, float %b) {
; CHECK-LABEL: setbc33:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    cror 4*cr5+lt, eq, un
; CHECK-NEXT:    setbc r3, 4*cr5+lt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp ueq float %a, %b
  %conv = zext i1 %cmp to i32
  ret i32 %conv
}

define signext i32 @setnbc33(float %a, float %b) {
; CHECK-LABEL: setnbc33:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    cror 4*cr5+lt, eq, un
; CHECK-NEXT:    setnbc r3, 4*cr5+lt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp ueq float %a, %b
  %conv = sext i1 %cmp to i32
  ret i32 %conv
}

define signext i32 @setbc34(double %a, double %b) {
; CHECK-LABEL: setbc34:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    cror 4*cr5+lt, eq, un
; CHECK-NEXT:    setbc r3, 4*cr5+lt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp ueq double %a, %b
  %conv = zext i1 %cmp to i32
  ret i32 %conv
}

define signext i32 @setnbc34(double %a, double %b) {
; CHECK-LABEL: setnbc34:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    cror 4*cr5+lt, eq, un
; CHECK-NEXT:    setnbc r3, 4*cr5+lt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp ueq double %a, %b
  %conv = sext i1 %cmp to i32
  ret i32 %conv
}

define signext i64 @setbc35(float %a, float %b) {
; CHECK-LABEL: setbc35:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    cror 4*cr5+lt, eq, un
; CHECK-NEXT:    setbc r3, 4*cr5+lt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp ueq float %a, %b
  %conv = zext i1 %cmp to i64
  ret i64 %conv
}

define signext i64 @setnbc35(float %a, float %b) {
; CHECK-LABEL: setnbc35:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    cror 4*cr5+lt, eq, un
; CHECK-NEXT:    setnbc r3, 4*cr5+lt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp ueq float %a, %b
  %conv = sext i1 %cmp to i64
  ret i64 %conv
}

define signext i64 @setbc36(double %a, double %b) {
; CHECK-LABEL: setbc36:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    cror 4*cr5+lt, eq, un
; CHECK-NEXT:    setbc r3, 4*cr5+lt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp ueq double %a, %b
  %conv = zext i1 %cmp to i64
  ret i64 %conv
}

define signext i64 @setnbc36(double %a, double %b) {
; CHECK-LABEL: setnbc36:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    cror 4*cr5+lt, eq, un
; CHECK-NEXT:    setnbc r3, 4*cr5+lt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp ueq double %a, %b
  %conv = sext i1 %cmp to i64
  ret i64 %conv
}

define signext i32 @setbc37(float %a, float %b) {
; CHECK-LABEL: setbc37:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    crnor 4*cr5+lt, un, eq
; CHECK-NEXT:    setbc r3, 4*cr5+lt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp one float %a, %b
  %conv = zext i1 %cmp to i32
  ret i32 %conv
}

define signext i32 @setnbc37(float %a, float %b) {
; CHECK-LABEL: setnbc37:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    crnor 4*cr5+lt, un, eq
; CHECK-NEXT:    setnbc r3, 4*cr5+lt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp one float %a, %b
  %conv = sext i1 %cmp to i32
  ret i32 %conv
}

define signext i32 @setbc38(double %a, double %b) {
; CHECK-LABEL: setbc38:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    crnor 4*cr5+lt, un, eq
; CHECK-NEXT:    setbc r3, 4*cr5+lt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp one double %a, %b
  %conv = zext i1 %cmp to i32
  ret i32 %conv
}

define signext i32 @setnbc38(double %a, double %b) {
; CHECK-LABEL: setnbc38:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    crnor 4*cr5+lt, un, eq
; CHECK-NEXT:    setnbc r3, 4*cr5+lt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp one double %a, %b
  %conv = sext i1 %cmp to i32
  ret i32 %conv
}

define signext i64 @setbc39(float %a, float %b) {
; CHECK-LABEL: setbc39:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    crnor 4*cr5+lt, un, eq
; CHECK-NEXT:    setbc r3, 4*cr5+lt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp one float %a, %b
  %conv = zext i1 %cmp to i64
  ret i64 %conv
}

define signext i64 @setnbc39(float %a, float %b) {
; CHECK-LABEL: setnbc39:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    crnor 4*cr5+lt, un, eq
; CHECK-NEXT:    setnbc r3, 4*cr5+lt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp one float %a, %b
  %conv = sext i1 %cmp to i64
  ret i64 %conv
}

define signext i64 @setbc40(double %a, double %b) {
; CHECK-LABEL: setbc40:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    crnor 4*cr5+lt, un, eq
; CHECK-NEXT:    setbc r3, 4*cr5+lt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp one double %a, %b
  %conv = zext i1 %cmp to i64
  ret i64 %conv
}

define signext i64 @setnbc40(double %a, double %b) {
; CHECK-LABEL: setnbc40:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    fcmpu cr0, f1, f2
; CHECK-NEXT:    crnor 4*cr5+lt, un, eq
; CHECK-NEXT:    setnbc r3, 4*cr5+lt
; CHECK-NEXT:    blr
entry:
  %cmp = fcmp one double %a, %b
  %conv = sext i1 %cmp to i64
  ret i64 %conv
}