Skip to content

Commit b794d72

Browse files
committed
[InstSimplify] add tests for fmul with 0.0 operand; NFC
1 parent 7f7a0f2 commit b794d72

File tree

1 file changed

+59
-0
lines changed

1 file changed

+59
-0
lines changed

llvm/test/Transforms/InstSimplify/floating-point-arithmetic.ll

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,65 @@ define double @fmul_X_1(double %a) {
170170
ret double %b
171171
}
172172

173+
define half @fmul_nnan_ninf_nneg_0.0(i15 %x) {
174+
; CHECK-LABEL: @fmul_nnan_ninf_nneg_0.0(
175+
; CHECK-NEXT: [[F:%.*]] = uitofp i15 [[X:%.*]] to half
176+
; CHECK-NEXT: [[R:%.*]] = fmul half [[F]], 0xH0000
177+
; CHECK-NEXT: ret half [[R]]
178+
;
179+
%f = uitofp i15 %x to half
180+
%r = fmul half %f, 0.0
181+
ret half %r
182+
}
183+
184+
define half @fmul_nnan_ninf_nneg_n0.0(i15 %x) {
185+
; CHECK-LABEL: @fmul_nnan_ninf_nneg_n0.0(
186+
; CHECK-NEXT: [[F:%.*]] = uitofp i15 [[X:%.*]] to half
187+
; CHECK-NEXT: [[R:%.*]] = fmul half [[F]], 0xH8000
188+
; CHECK-NEXT: ret half [[R]]
189+
;
190+
%f = uitofp i15 %x to half
191+
%r = fmul half %f, -0.0
192+
ret half %r
193+
}
194+
195+
define half @fmul_nnan_nneg_0.0(i16 %x) {
196+
; CHECK-LABEL: @fmul_nnan_nneg_0.0(
197+
; CHECK-NEXT: [[F:%.*]] = uitofp i16 [[X:%.*]] to half
198+
; CHECK-NEXT: [[R:%.*]] = fmul half [[F]], 0xH0000
199+
; CHECK-NEXT: ret half [[R]]
200+
;
201+
%f = uitofp i16 %x to half
202+
%r = fmul half %f, 0.0
203+
ret half %r
204+
}
205+
206+
define double @fmul_nnan_ninf_nneg_n0.0_commute(i127 %x) {
207+
; CHECK-LABEL: @fmul_nnan_ninf_nneg_n0.0_commute(
208+
; CHECK-NEXT: [[F:%.*]] = uitofp i127 [[X:%.*]] to float
209+
; CHECK-NEXT: [[E:%.*]] = fpext float [[F]] to double
210+
; CHECK-NEXT: [[R:%.*]] = fmul double -0.000000e+00, [[E]]
211+
; CHECK-NEXT: ret double [[R]]
212+
;
213+
%f = uitofp i127 %x to float
214+
%e = fpext float %f to double
215+
%r = fmul double -0.0, %e
216+
ret double %r
217+
}
218+
219+
define double @fmul_nnan_ninf_nneg_0.0_commute(i128 %x) {
220+
; CHECK-LABEL: @fmul_nnan_ninf_nneg_0.0_commute(
221+
; CHECK-NEXT: [[F:%.*]] = uitofp i128 [[X:%.*]] to float
222+
; CHECK-NEXT: [[E:%.*]] = fpext float [[F]] to double
223+
; CHECK-NEXT: [[R:%.*]] = fmul double 0.000000e+00, [[E]]
224+
; CHECK-NEXT: ret double [[R]]
225+
;
226+
%f = uitofp i128 %x to float
227+
%e = fpext float %f to double
228+
%r = fmul double 0.0, %e
229+
ret double %r
230+
}
231+
173232
; PR2642
174233
define <4 x float> @fmul_X_1_vec(<4 x float> %x) {
175234
; CHECK-LABEL: @fmul_X_1_vec(

0 commit comments

Comments
 (0)