|
4 | 4 | ; (-0.0 - X) * C => X * -C
|
5 | 5 | define float @test1(float %x) {
|
6 | 6 | ; CHECK-LABEL: @test1(
|
7 |
| -; CHECK-NEXT: [[MUL:%.*]] = fmul float [[X:%.*]], -2.000000e+01 |
| 7 | +; CHECK-NEXT: [[MUL:%.*]] = fmul ninf float [[X:%.*]], -2.000000e+01 |
8 | 8 | ; CHECK-NEXT: ret float [[MUL]]
|
9 | 9 | ;
|
10 | 10 | %sub = fsub float -0.000000e+00, %x
|
11 |
| - %mul = fmul float %sub, 2.0e+1 |
| 11 | + %mul = fmul ninf float %sub, 2.0e+1 |
12 | 12 | ret float %mul
|
13 | 13 | }
|
14 | 14 |
|
15 | 15 | ; (0.0 - X) * C => X * -C
|
16 | 16 | define float @test2(float %x) {
|
17 | 17 | ; CHECK-LABEL: @test2(
|
18 |
| -; CHECK-NEXT: [[MUL:%.*]] = fmul float [[X:%.*]], -2.000000e+01 |
| 18 | +; CHECK-NEXT: [[MUL:%.*]] = fmul nnan float [[X:%.*]], -2.000000e+01 |
19 | 19 | ; CHECK-NEXT: ret float [[MUL]]
|
20 | 20 | ;
|
21 | 21 | %sub = fsub nsz float 0.000000e+00, %x
|
22 |
| - %mul = fmul float %sub, 2.0e+1 |
| 22 | + %mul = fmul nnan float %sub, 2.0e+1 |
23 | 23 | ret float %mul
|
24 | 24 | }
|
25 | 25 |
|
26 | 26 | ; (-0.0 - X) * (-0.0 - Y) => X * Y
|
27 | 27 | define float @test3(float %x, float %y) {
|
28 | 28 | ; CHECK-LABEL: @test3(
|
29 |
| -; CHECK-NEXT: [[MUL:%.*]] = fmul fast float [[X:%.*]], [[Y:%.*]] |
| 29 | +; CHECK-NEXT: [[MUL:%.*]] = fmul arcp float [[X:%.*]], [[Y:%.*]] |
30 | 30 | ; CHECK-NEXT: ret float [[MUL]]
|
31 | 31 | ;
|
32 | 32 | %sub1 = fsub float -0.000000e+00, %x
|
33 | 33 | %sub2 = fsub float -0.000000e+00, %y
|
34 |
| - %mul = fmul fast float %sub1, %sub2 |
| 34 | + %mul = fmul arcp float %sub1, %sub2 |
35 | 35 | ret float %mul
|
36 | 36 | }
|
37 | 37 |
|
38 | 38 | ; (0.0 - X) * (0.0 - Y) => X * Y
|
39 | 39 | define float @test4(float %x, float %y) {
|
40 | 40 | ; CHECK-LABEL: @test4(
|
41 |
| -; CHECK-NEXT: [[MUL:%.*]] = fmul float [[X:%.*]], [[Y:%.*]] |
| 41 | +; CHECK-NEXT: [[MUL:%.*]] = fmul afn float [[X:%.*]], [[Y:%.*]] |
42 | 42 | ; CHECK-NEXT: ret float [[MUL]]
|
43 | 43 | ;
|
44 | 44 | %sub1 = fsub nsz float 0.000000e+00, %x
|
45 | 45 | %sub2 = fsub nsz float 0.000000e+00, %y
|
46 |
| - %mul = fmul float %sub1, %sub2 |
| 46 | + %mul = fmul afn float %sub1, %sub2 |
47 | 47 | ret float %mul
|
48 | 48 | }
|
49 | 49 |
|
|
0 commit comments