1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc < %s -mtriple=i686-- -mcpu=i386 | FileCheck %s --check-prefix=BASE 3; RUN: llc < %s -mtriple=i686-- -mcpu=pentiumpro | FileCheck %s --check-prefix=CMOV 4; PR6679 5 6define float @foo(float* %col) { 7; BASE-LABEL: foo: 8; BASE: # %bb.0: 9; BASE-NEXT: movl {{[0-9]+}}(%esp), %eax 10; BASE-NEXT: flds (%eax) 11; BASE-NEXT: fldz 12; BASE-NEXT: fucomp %st(1) 13; BASE-NEXT: fnstsw %ax 14; BASE-NEXT: # kill: def $ah killed $ah killed $ax 15; BASE-NEXT: sahf 16; BASE-NEXT: fld %st(0) 17; BASE-NEXT: fchs 18; BASE-NEXT: ja .LBB0_2 19; BASE-NEXT: # %bb.1: 20; BASE-NEXT: fstp %st(0) 21; BASE-NEXT: fldz 22; BASE-NEXT: fxch %st(1) 23; BASE-NEXT: .LBB0_2: 24; BASE-NEXT: fstp %st(1) 25; BASE-NEXT: retl 26; 27; CMOV-LABEL: foo: 28; CMOV: # %bb.0: 29; CMOV-NEXT: movl {{[0-9]+}}(%esp), %eax 30; CMOV-NEXT: flds (%eax) 31; CMOV-NEXT: fldz 32; CMOV-NEXT: fucompi %st(1), %st 33; CMOV-NEXT: fld %st(0) 34; CMOV-NEXT: fchs 35; CMOV-NEXT: fxch %st(1) 36; CMOV-NEXT: fcmovnbe %st(1), %st 37; CMOV-NEXT: fstp %st(1) 38; CMOV-NEXT: retl 39 %t = load float, float* %col 40 %t16 = fcmp olt float %t, 0.0 41 %t20 = fsub float -0.000000e+00, %t 42 %ift = select i1 %t16, float %t20, float %t 43 ret float %ift 44} 45