Michael Ilseman | 6cdacff | 2012-11-27 01:00:22 +0000 | [diff] [blame^] | 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 | } |