| ; 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 |
| } |