blob: 604123c1aa48f64304d09fb078a95cd156efbca9 [file] [edit]
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
; RUN: llc -O1 -mtriple powerpc -mattr=+spe -o - %s | FileCheck %s
; This used to hit an assert
;
; ../lib/CodeGen/SelectionDAG/LegalizeDAG.cpp:3971: bool {anonymous}::SelectionDAGLegalize::ExpandNode(llvm::SDNode*): Assertion `!NeedInvert && "Don't know how to invert BR_CC!"' failed.
define void @test_fcmpueq_legalize_br_cc_with_invert(float %a) {
; CHECK-LABEL: test_fcmpueq_legalize_br_cc_with_invert:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: mflr 0
; CHECK-NEXT: stwu 1, -32(1)
; CHECK-NEXT: stw 0, 36(1)
; CHECK-NEXT: .cfi_def_cfa_offset 32
; CHECK-NEXT: .cfi_offset lr, 4
; CHECK-NEXT: .cfi_offset r28, -16
; CHECK-NEXT: .cfi_offset r29, -12
; CHECK-NEXT: .cfi_offset r30, -8
; CHECK-NEXT: stw 30, 24(1) # 4-byte Folded Spill
; CHECK-NEXT: mr 30, 3
; CHECK-NEXT: lis 3, .LCPI0_0@ha
; CHECK-NEXT: stw 29, 20(1) # 4-byte Folded Spill
; CHECK-NEXT: lwz 29, .LCPI0_0@l(3)
; CHECK-NEXT: stw 28, 16(1) # 4-byte Folded Spill
; CHECK-NEXT: b .LBB0_2
; CHECK-NEXT: .LBB0_1: # %l1
; CHECK-NEXT: #
; CHECK-NEXT: mr 3, 30
; CHECK-NEXT: mr 4, 29
; CHECK-NEXT: bl __ltsf2
; CHECK-NEXT: srwi 3, 3, 31
; CHECK-NEXT: or. 3, 28, 3
; CHECK-NEXT: bne 0, .LBB0_4
; CHECK-NEXT: .LBB0_2: # %l1
; CHECK-NEXT: #
; CHECK-NEXT: mr 3, 30
; CHECK-NEXT: mr 4, 29
; CHECK-NEXT: bl __gtsf2
; CHECK-NEXT: cmpwi 3, 0
; CHECK-NEXT: li 28, 1
; CHECK-NEXT: bgt 0, .LBB0_1
; CHECK-NEXT: # %bb.3: # %l1
; CHECK-NEXT: #
; CHECK-NEXT: li 28, 0
; CHECK-NEXT: b .LBB0_1
; CHECK-NEXT: .LBB0_4: # %l2
; CHECK-NEXT: lwz 30, 24(1) # 4-byte Folded Reload
; CHECK-NEXT: lwz 29, 20(1) # 4-byte Folded Reload
; CHECK-NEXT: lwz 28, 16(1) # 4-byte Folded Reload
; CHECK-NEXT: lwz 0, 36(1)
; CHECK-NEXT: addi 1, 1, 32
; CHECK-NEXT: mtlr 0
; CHECK-NEXT: blr
entry:
br label %l1
l1:
%fcmp = fcmp ueq float %a, 0xC6306B3440000000
br i1 %fcmp, label %l1, label %l2
l2:
ret void
}