Skip to content

Commit 728c44b

Browse files
committed
[DAGCombiner] Add a new test.
1 parent e731c53 commit 728c44b

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed

llvm/test/CodeGen/AMDGPU/fold-freeze-fmul-to-fma.ll

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,3 +96,35 @@ define float @fma_from_freeze_mul_sub_right_with_nnan(float %x, float %y) {
9696
%sub = fsub nnan contract float 1.000000e+00, %mul.fr
9797
ret float %sub
9898
}
99+
100+
define float @fma_freeze_sink_multiple_maybe_poison_nnan_add(float %x, float %y) {
101+
; CHECK-LABEL: fma_freeze_sink_multiple_maybe_poison_nnan_add:
102+
; CHECK: ; %bb.0:
103+
; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
104+
; CHECK-NEXT: v_dual_subrev_f32 v0, 1.0, v0 :: v_dual_add_f32 v1, 1.0, v1
105+
; CHECK-NEXT: s_delay_alu instid0(VALU_DEP_1)
106+
; CHECK-NEXT: v_fma_f32 v0, v0, v1, 1.0
107+
; CHECK-NEXT: s_setpc_b64 s[30:31]
108+
%fadd_x = fsub reassoc nnan nsz arcp contract float %x, 1.000000e+00
109+
%fadd_y = fadd reassoc nnan nsz arcp contract float %y, 1.000000e+00
110+
%mul = fmul reassoc nnan nsz arcp contract afn float %fadd_x, %fadd_y
111+
%mul.fr = freeze float %mul
112+
%sub = fadd reassoc nsz arcp contract afn contract float %mul.fr, 1.000000e+00
113+
ret float %sub
114+
}
115+
116+
define float @fma_freeze_sink_multiple_maybe_poison_nnan_sub(float %x, float %y) {
117+
; CHECK-LABEL: fma_freeze_sink_multiple_maybe_poison_nnan_sub:
118+
; CHECK: ; %bb.0:
119+
; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
120+
; CHECK-NEXT: v_dual_add_f32 v0, 1.0, v0 :: v_dual_add_f32 v1, -1.0, v1
121+
; CHECK-NEXT: s_delay_alu instid0(VALU_DEP_1)
122+
; CHECK-NEXT: v_fma_f32 v0, v0, v1, -1.0
123+
; CHECK-NEXT: s_setpc_b64 s[30:31]
124+
%fadd_x = fadd reassoc nnan nsz arcp contract float %x, 1.000000e+00
125+
%fadd_y = fsub reassoc nnan nsz arcp contract float %y, 1.000000e+00
126+
%mul = fmul reassoc nnan nsz arcp contract afn float %fadd_x, %fadd_y
127+
%mul.fr = freeze float %mul
128+
%sub = fsub reassoc nsz arcp contract afn contract float %mul.fr, 1.000000e+00
129+
ret float %sub
130+
}

0 commit comments

Comments
 (0)