aboutsummaryrefslogtreecommitdiff
path: root/test/CodeGen/X86/fastmath-optnone.ll
blob: 0caadff89167b634d60c9dc7eb8d7d178b6a20c6 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
; RUN: llc < %s -mcpu=corei7 -march=x86-64 -mattr=+sse2 | FileCheck %s
; Verify that floating-point operations inside 'optnone' functions
; are not optimized even if unsafe-fp-math is set.

define float @foo(float %x) #0 {
entry:
  %add = fadd fast float %x, %x
  %add1 = fadd fast float %add, %x
  ret float %add1
}

; CHECK-LABEL: @foo
; CHECK-NOT: add
; CHECK: mul
; CHECK-NOT: add
; CHECK: ret

define float @fooWithOptnone(float %x) #1 {
entry:
  %add = fadd fast float %x, %x
  %add1 = fadd fast float %add, %x
  ret float %add1
}

; CHECK-LABEL: @fooWithOptnone
; CHECK-NOT: mul
; CHECK: add
; CHECK-NOT: mul
; CHECK: add
; CHECK-NOT: mul
; CHECK: ret


attributes #0 = { "unsafe-fp-math"="true" }
attributes #1 = { noinline optnone "unsafe-fp-math"="true" }