Skip to content

Commit 8886d01

Browse files
committed
[InstCombine] Precommit tests for D67351.
llvm-svn: 371517
1 parent df6a958 commit 8886d01

File tree

1 file changed

+86
-0
lines changed
  • llvm/test/Transforms/InstCombine

1 file changed

+86
-0
lines changed

llvm/test/Transforms/InstCombine/fma.ll

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -369,5 +369,91 @@ define float @fmuladd_x_1_z_fast(float %x, float %z) {
369369
ret float %fmuladd
370370
}
371371

372+
define <2 x double> @fmuladd_a_0_b(<2 x double> %a, <2 x double> %b) {
373+
; CHECK-LABEL: @fmuladd_a_0_b(
374+
; CHECK-NEXT: entry:
375+
; CHECK-NEXT: [[RES:%.*]] = call nnan nsz <2 x double> @llvm.fmuladd.v2f64(<2 x double> [[A:%.*]], <2 x double> zeroinitializer, <2 x double> [[B:%.*]])
376+
; CHECK-NEXT: ret <2 x double> [[RES]]
377+
;
378+
entry:
379+
%res = call nnan nsz <2 x double> @llvm.fmuladd.v2f64(<2 x double> %a, <2 x double> zeroinitializer, <2 x double> %b)
380+
ret <2 x double> %res
381+
}
382+
383+
define <2 x double> @fmuladd_0_a_b(<2 x double> %a, <2 x double> %b) {
384+
; CHECK-LABEL: @fmuladd_0_a_b(
385+
; CHECK-NEXT: entry:
386+
; CHECK-NEXT: [[RES:%.*]] = call nnan nsz <2 x double> @llvm.fmuladd.v2f64(<2 x double> [[A:%.*]], <2 x double> zeroinitializer, <2 x double> [[B:%.*]])
387+
; CHECK-NEXT: ret <2 x double> [[RES]]
388+
;
389+
entry:
390+
%res = call nnan nsz <2 x double> @llvm.fmuladd.v2f64(<2 x double> zeroinitializer, <2 x double> %a, <2 x double> %b)
391+
ret <2 x double> %res
392+
}
393+
394+
define <2 x double> @fmuladd_a_0_b_missing_flags(<2 x double> %a, <2 x double> %b) {
395+
; CHECK-LABEL: @fmuladd_a_0_b_missing_flags(
396+
; CHECK-NEXT: entry:
397+
; CHECK-NEXT: [[RES:%.*]] = call nnan <2 x double> @llvm.fmuladd.v2f64(<2 x double> [[A:%.*]], <2 x double> zeroinitializer, <2 x double> [[B:%.*]])
398+
; CHECK-NEXT: ret <2 x double> [[RES]]
399+
;
400+
entry:
401+
%res = call nnan <2 x double> @llvm.fmuladd.v2f64(<2 x double> %a, <2 x double> zeroinitializer, <2 x double> %b)
402+
ret <2 x double> %res
403+
}
404+
405+
declare <2 x double> @llvm.fmuladd.v2f64(<2 x double>, <2 x double>, <2 x double>)
406+
407+
define <2 x double> @fma_a_0_b(<2 x double> %a, <2 x double> %b) {
408+
; CHECK-LABEL: @fma_a_0_b(
409+
; CHECK-NEXT: entry:
410+
; CHECK-NEXT: [[RES:%.*]] = call nnan nsz <2 x double> @llvm.fma.v2f64(<2 x double> [[A:%.*]], <2 x double> zeroinitializer, <2 x double> [[B:%.*]])
411+
; CHECK-NEXT: ret <2 x double> [[RES]]
412+
;
413+
entry:
414+
%res = call nnan nsz <2 x double> @llvm.fma.v2f64(<2 x double> %a, <2 x double> zeroinitializer, <2 x double> %b)
415+
ret <2 x double> %res
416+
}
417+
418+
define <2 x double> @fma_0_a_b(<2 x double> %a, <2 x double> %b) {
419+
; CHECK-LABEL: @fma_0_a_b(
420+
; CHECK-NEXT: entry:
421+
; CHECK-NEXT: [[RES:%.*]] = call nnan nsz <2 x double> @llvm.fma.v2f64(<2 x double> [[A:%.*]], <2 x double> zeroinitializer, <2 x double> [[B:%.*]])
422+
; CHECK-NEXT: ret <2 x double> [[RES]]
423+
;
424+
entry:
425+
%res = call nnan nsz <2 x double> @llvm.fma.v2f64(<2 x double> zeroinitializer, <2 x double> %a, <2 x double> %b)
426+
ret <2 x double> %res
427+
}
428+
429+
define <2 x double> @fma_0_a_b_missing_flags(<2 x double> %a, <2 x double> %b) {
430+
; CHECK-LABEL: @fma_0_a_b_missing_flags(
431+
; CHECK-NEXT: entry:
432+
; CHECK-NEXT: [[RES:%.*]] = call nsz <2 x double> @llvm.fma.v2f64(<2 x double> [[A:%.*]], <2 x double> zeroinitializer, <2 x double> [[B:%.*]])
433+
; CHECK-NEXT: ret <2 x double> [[RES]]
434+
;
435+
entry:
436+
%res = call nsz <2 x double> @llvm.fma.v2f64(<2 x double> zeroinitializer, <2 x double> %a, <2 x double> %b)
437+
ret <2 x double> %res
438+
}
439+
440+
define <2 x double> @fma_sqrt(<2 x double> %a, <2 x double> %b) {
441+
; CHECK-LABEL: @fma_sqrt(
442+
; CHECK-NEXT: entry:
443+
; CHECK-NEXT: [[SQRT:%.*]] = call fast <2 x double> @llvm.sqrt.v2f64(<2 x double> [[A:%.*]])
444+
; CHECK-NEXT: [[RES:%.*]] = call fast <2 x double> @llvm.fma.v2f64(<2 x double> [[SQRT]], <2 x double> [[SQRT]], <2 x double> [[B:%.*]])
445+
; CHECK-NEXT: ret <2 x double> [[RES]]
446+
;
447+
entry:
448+
%sqrt = call fast <2 x double> @llvm.sqrt.v2f64(<2 x double> %a)
449+
%res = call fast <2 x double> @llvm.fma.v2f64(<2 x double> %sqrt, <2 x double> %sqrt, <2 x double> %b)
450+
ret <2 x double> %res
451+
}
452+
453+
454+
declare <2 x double> @llvm.fma.v2f64(<2 x double>, <2 x double>, <2 x double>)
455+
declare <2 x double> @llvm.sqrt.v2f64(<2 x double>)
456+
457+
372458
attributes #0 = { nounwind }
373459
attributes #1 = { nounwind readnone }

0 commit comments

Comments
 (0)