; RUN: opt -S -reassociate < %s | FileCheck %s

define void @test1() {
; CHECK-LABEL: @test1
; CHECK: call
; CHECK: fsub
; CHECK: fadd
  %tmp = tail call <4 x float> @blam()
  %tmp23 = fsub fast <4 x float> undef, %tmp
  %tmp24 = fadd fast <4 x float> %tmp23, undef
  tail call void @wombat(<4 x float> %tmp24)
  ret void
}

define half @test2() {
; CHECK-LABEL: @test2
; CHECK: fsub
; CHECK: fsub
; CHECK: fadd
  %tmp15 = fsub fast half undef, undef
  %tmp17 = fsub fast half undef, %tmp15
  %tmp18 = fadd fast half undef, %tmp17
  ret half %tmp18
}



; Function Attrs: optsize
declare <4 x float> @blam()

; Function Attrs: optsize
declare void @wombat(<4 x float>)