Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / llvm / test / CodeGen / X86 / setuge.ll
blobc04287b7808c20d7946e2469410e25e7a562d5d9
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc < %s -mtriple=i686-- | FileCheck %s
3 ; Test that we ignore -sahf in 32-bit mode rather than asserting.
4 ; RUN: llc < %s -mtriple=i686-- -mattr=-sahf | FileCheck %s
6 declare i1 @llvm.isunordered.f32(float, float)
8 define float @cmp(float %A, float %B, float %C, float %D) nounwind {
9 ; CHECK-LABEL: cmp:
10 ; CHECK:       # %bb.0: # %entry
11 ; CHECK-NEXT:    flds {{[0-9]+}}(%esp)
12 ; CHECK-NEXT:    flds {{[0-9]+}}(%esp)
13 ; CHECK-NEXT:    fucompp
14 ; CHECK-NEXT:    fnstsw %ax
15 ; CHECK-NEXT:    # kill: def $ah killed $ah killed $ax
16 ; CHECK-NEXT:    sahf
17 ; CHECK-NEXT:    jbe .LBB0_1
18 ; CHECK-NEXT:  # %bb.2: # %entry
19 ; CHECK-NEXT:    leal {{[0-9]+}}(%esp), %eax
20 ; CHECK-NEXT:    flds (%eax)
21 ; CHECK-NEXT:    retl
22 ; CHECK-NEXT:  .LBB0_1:
23 ; CHECK-NEXT:    leal {{[0-9]+}}(%esp), %eax
24 ; CHECK-NEXT:    flds (%eax)
25 ; CHECK-NEXT:    retl
26 entry:
27         %tmp.1 = fcmp uno float %A, %B          ; <i1> [#uses=1]
28         %tmp.2 = fcmp oge float %A, %B          ; <i1> [#uses=1]
29         %tmp.3 = or i1 %tmp.1, %tmp.2           ; <i1> [#uses=1]
30         %tmp.4 = select i1 %tmp.3, float %C, float %D           ; <float> [#uses=1]
31         ret float %tmp.4