|
1 | 1 | ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5 |
2 | | -; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1100 < %s | FileCheck %s |
| 2 | +; RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -verify-machineinstrs < %s | FileCheck %s -check-prefix GFX11 |
3 | 3 |
|
4 | 4 | define float @fma_from_freeze_mul_add_left(float %x, float %y) { |
5 | | -; CHECK-LABEL: fma_from_freeze_mul_add_left: |
6 | | -; CHECK: ; %bb.0: |
7 | | -; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) |
8 | | -; CHECK-NEXT: v_fma_f32 v0, v0, v1, 1.0 |
9 | | -; CHECK-NEXT: s_setpc_b64 s[30:31] |
| 5 | +; GFX11-LABEL: fma_from_freeze_mul_add_left: |
| 6 | +; GFX11: ; %bb.0: ; %bb |
| 7 | +; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) |
| 8 | +; GFX11-NEXT: v_fma_f32 v0, v0, v1, 1.0 |
| 9 | +; GFX11-NEXT: s_setpc_b64 s[30:31] |
| 10 | +bb: |
10 | 11 | %mul = fmul contract float %x, %y |
11 | 12 | %mul.fr = freeze float %mul |
12 | 13 | %add = fadd contract float %mul.fr, 1.000000e+00 |
13 | 14 | ret float %add |
14 | 15 | } |
15 | 16 |
|
16 | | -define float @fma_from_freeze_mul_add_left_with_nnan(float %x, float %y) { |
17 | | -; CHECK-LABEL: fma_from_freeze_mul_add_left_with_nnan: |
18 | | -; CHECK: ; %bb.0: |
19 | | -; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) |
20 | | -; CHECK-NEXT: v_mul_f32_e32 v0, v0, v1 |
21 | | -; CHECK-NEXT: s_delay_alu instid0(VALU_DEP_1) |
22 | | -; CHECK-NEXT: v_add_f32_e32 v0, 1.0, v0 |
23 | | -; CHECK-NEXT: s_setpc_b64 s[30:31] |
24 | | - %mul = fmul nnan contract afn float %x, %y |
25 | | - %mul.fr = freeze float %mul |
26 | | - %add = fadd nnan contract float %mul.fr, 1.000000e+00 |
27 | | - ret float %add |
28 | | -} |
29 | | - |
30 | 17 | define float @fma_from_freeze_mul_add_right(float %x, float %y) { |
31 | | -; CHECK-LABEL: fma_from_freeze_mul_add_right: |
32 | | -; CHECK: ; %bb.0: |
33 | | -; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) |
34 | | -; CHECK-NEXT: v_fma_f32 v0, v0, v1, 1.0 |
35 | | -; CHECK-NEXT: s_setpc_b64 s[30:31] |
| 18 | +; GFX11-LABEL: fma_from_freeze_mul_add_right: |
| 19 | +; GFX11: ; %bb.0: ; %bb |
| 20 | +; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) |
| 21 | +; GFX11-NEXT: v_fma_f32 v0, v0, v1, 1.0 |
| 22 | +; GFX11-NEXT: s_setpc_b64 s[30:31] |
| 23 | +bb: |
36 | 24 | %mul = fmul contract float %x, %y |
37 | 25 | %mul.fr = freeze float %mul |
38 | 26 | %add = fadd contract float 1.000000e+00, %mul.fr |
39 | 27 | ret float %add |
40 | 28 | } |
41 | 29 |
|
42 | | -define float @fma_from_freeze_mul_add_right_with_nnan(float %x, float %y) { |
43 | | -; CHECK-LABEL: fma_from_freeze_mul_add_right_with_nnan: |
44 | | -; CHECK: ; %bb.0: |
45 | | -; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) |
46 | | -; CHECK-NEXT: v_mul_f32_e32 v0, v0, v1 |
47 | | -; CHECK-NEXT: s_delay_alu instid0(VALU_DEP_1) |
48 | | -; CHECK-NEXT: v_add_f32_e32 v0, 1.0, v0 |
49 | | -; CHECK-NEXT: s_setpc_b64 s[30:31] |
50 | | - %mul = fmul nnan contract float %x, %y |
51 | | - %mul.fr = freeze float %mul |
52 | | - %add = fadd nnan contract float 1.000000e+00, %mul.fr |
53 | | - ret float %add |
54 | | -} |
55 | | - |
56 | 30 | define float @fma_from_freeze_mul_sub_left(float %x, float %y) { |
57 | | -; CHECK-LABEL: fma_from_freeze_mul_sub_left: |
58 | | -; CHECK: ; %bb.0: |
59 | | -; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) |
60 | | -; CHECK-NEXT: v_fma_f32 v0, v0, v1, -1.0 |
61 | | -; CHECK-NEXT: s_setpc_b64 s[30:31] |
| 31 | +; GFX11-LABEL: fma_from_freeze_mul_sub_left: |
| 32 | +; GFX11: ; %bb.0: ; %bb |
| 33 | +; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) |
| 34 | +; GFX11-NEXT: v_fma_f32 v0, v0, v1, -1.0 |
| 35 | +; GFX11-NEXT: s_setpc_b64 s[30:31] |
| 36 | +bb: |
62 | 37 | %mul = fmul contract float %x, %y |
63 | 38 | %mul.fr = freeze float %mul |
64 | 39 | %sub = fsub contract float %mul.fr, 1.000000e+00 |
65 | 40 | ret float %sub |
66 | 41 | } |
67 | 42 |
|
68 | | -define float @fma_from_freeze_mul_sub_left_with_nnan(float %x, float %y) { |
69 | | -; CHECK-LABEL: fma_from_freeze_mul_sub_left_with_nnan: |
70 | | -; CHECK: ; %bb.0: |
71 | | -; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) |
72 | | -; CHECK-NEXT: v_mul_f32_e32 v0, v0, v1 |
73 | | -; CHECK-NEXT: s_delay_alu instid0(VALU_DEP_1) |
74 | | -; CHECK-NEXT: v_add_f32_e32 v0, -1.0, v0 |
75 | | -; CHECK-NEXT: s_setpc_b64 s[30:31] |
76 | | - %mul = fmul nnan contract float %x, %y |
77 | | - %mul.fr = freeze float %mul |
78 | | - %sub = fsub nnan contract float %mul.fr, 1.000000e+00 |
79 | | - ret float %sub |
80 | | -} |
81 | | - |
82 | 43 | define float @fma_from_freeze_mul_sub_right(float %x, float %y) { |
83 | | -; CHECK-LABEL: fma_from_freeze_mul_sub_right: |
84 | | -; CHECK: ; %bb.0: |
85 | | -; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) |
86 | | -; CHECK-NEXT: v_fma_f32 v0, -v0, v1, 1.0 |
87 | | -; CHECK-NEXT: s_setpc_b64 s[30:31] |
| 44 | +; GFX11-LABEL: fma_from_freeze_mul_sub_right: |
| 45 | +; GFX11: ; %bb.0: ; %bb |
| 46 | +; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) |
| 47 | +; GFX11-NEXT: v_fma_f32 v0, -v0, v1, 1.0 |
| 48 | +; GFX11-NEXT: s_setpc_b64 s[30:31] |
| 49 | +bb: |
88 | 50 | %mul = fmul contract float %x, %y |
89 | 51 | %mul.fr = freeze float %mul |
90 | 52 | %sub = fsub contract float 1.000000e+00, %mul.fr |
91 | 53 | ret float %sub |
92 | 54 | } |
93 | | - |
94 | | -define float @fma_from_freeze_mul_sub_right_with_nnan(float %x, float %y) { |
95 | | -; CHECK-LABEL: fma_from_freeze_mul_sub_right_with_nnan: |
96 | | -; CHECK: ; %bb.0: |
97 | | -; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) |
98 | | -; CHECK-NEXT: v_mul_f32_e32 v0, v0, v1 |
99 | | -; CHECK-NEXT: s_delay_alu instid0(VALU_DEP_1) |
100 | | -; CHECK-NEXT: v_sub_f32_e32 v0, 1.0, v0 |
101 | | -; CHECK-NEXT: s_setpc_b64 s[30:31] |
102 | | - %mul = fmul nnan contract float %x, %y |
103 | | - %mul.fr = freeze float %mul |
104 | | - %sub = fsub nnan contract float 1.000000e+00, %mul.fr |
105 | | - ret float %sub |
106 | | -} |
0 commit comments