; RUN: llc < %s -fast-isel -fast-isel-abort -march=x86-64 | FileCheck %s
; RUN: llc < %s -fast-isel -march=x86 | grep xor | count 2

; CHECK: doo:
; CHECK: xor
define double @doo(double %x) nounwind {
  %y = fsub double -0.0, %x
  ret double %y
}

; CHECK: foo:
; CHECK: xor
define float @foo(float %x) nounwind {
  %y = fsub float -0.0, %x
  ret float %y
}


Add -mattr=+sse2 to the -march=x86 version of this test. Without sse, this code falls back to SelectionDAG isel which uses an x87 instruction, which is fine, but not what this test is testing for.
; RUN: llc < %s -fast-isel -fast-isel-abort -march=x86-64 | FileCheck %s
; RUN: llc < %s -fast-isel -march=x86 -mattr=+sse2 | grep xor | count 2

; CHECK: doo:
; CHECK: xor
define double @doo(double %x) nounwind {
  %y = fsub double -0.0, %x
  ret double %y
}

; CHECK: foo:
; CHECK: xor
define float @foo(float %x) nounwind {
  %y = fsub float -0.0, %x
  ret float %y
}