Fast-math test for SimplifyInstruction: fold multiply by 0
[oota-llvm.git] / test / Transforms / InstSimplify / fast-math.ll
1 ; RUN: opt < %s -instsimplify -S | FileCheck %s
2
3 ;; x * 0 ==> 0 when no-nans and no-signed-zero
4 ; CHECK: mul_zero_1
5 define float @mul_zero_1(float %a) {
6   %b = fmul nsz nnan float %a, 0.0
7 ; CHECK: ret float 0.0
8   ret float %b
9 }
10 ; CHECK: mul_zero_2
11 define float @mul_zero_2(float %a) {
12   %b = fmul fast float 0.0, %a
13 ; CHECK: ret float 0.0
14   ret float %b
15 }
16
17 ;; x * 0 =/=> 0 when there could be nans or -0
18 ; CHECK: no_mul_zero_1
19 define float @no_mul_zero_1(float %a) {
20   %b = fmul nsz float %a, 0.0
21 ; CHECK: ret float %b
22   ret float %b
23 }
24 ; CHECK: no_mul_zero_2
25 define float @no_mul_zero_2(float %a) {
26   %b = fmul nnan float %a, 0.0
27 ; CHECK: ret float %b
28   ret float %b
29 }
30 ; CHECK: no_mul_zero_3
31 define float @no_mul_zero_3(float %a) {
32   %b = fmul float %a, 0.0
33 ; CHECK: ret float %b
34   ret float %b
35 }