@@ -1640,3 +1640,112 @@ for.inc:
1640
1640
for.end:
1641
1641
ret void
1642
1642
}
1643
+
1644
+ define i32 @float_induction_with_dbg_on_fadd (ptr %dst ) {
1645
+ ; VEC4_INTERL1-LABEL: @float_induction_with_dbg_on_fadd(
1646
+ ; VEC4_INTERL1-NEXT: entry:
1647
+ ; VEC4_INTERL1-NEXT: br i1 false, label [[SCALAR_PH:%.*]], label [[VECTOR_PH:%.*]]
1648
+ ; VEC4_INTERL1: vector.ph:
1649
+ ; VEC4_INTERL1-NEXT: br label [[VECTOR_BODY:%.*]]
1650
+ ; VEC4_INTERL1: vector.body:
1651
+ ; VEC4_INTERL1-NEXT: [[INDEX:%.*]] = phi i64 [ 0, [[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], [[VECTOR_BODY]] ]
1652
+ ; VEC4_INTERL1-NEXT: [[TMP0:%.*]] = getelementptr float, ptr null, i64 [[INDEX]]
1653
+ ; VEC4_INTERL1-NEXT: store <4 x float> poison, ptr [[TMP0]], align 8
1654
+ ; VEC4_INTERL1-NEXT: [[INDEX_NEXT]] = add nuw i64 [[INDEX]], 4
1655
+ ; VEC4_INTERL1-NEXT: [[TMP1:%.*]] = icmp eq i64 [[INDEX_NEXT]], 200
1656
+ ; VEC4_INTERL1-NEXT: br i1 [[TMP1]], label [[MIDDLE_BLOCK:%.*]], label [[VECTOR_BODY]], !llvm.loop [[LOOP15:![0-9]+]]
1657
+ ; VEC4_INTERL1: middle.block:
1658
+ ; VEC4_INTERL1-NEXT: br i1 true, label [[EXIT:%.*]], label [[SCALAR_PH]]
1659
+ ; VEC4_INTERL1: scalar.ph:
1660
+ ; VEC4_INTERL1-NEXT: br label [[LOOP:%.*]]
1661
+ ; VEC4_INTERL1: loop:
1662
+ ; VEC4_INTERL1-NEXT: br i1 poison, label [[EXIT]], label [[LOOP]], !llvm.loop [[LOOP16:![0-9]+]]
1663
+ ; VEC4_INTERL1: exit:
1664
+ ; VEC4_INTERL1-NEXT: ret i32 0
1665
+ ;
1666
+ ; VEC4_INTERL2-LABEL: @float_induction_with_dbg_on_fadd(
1667
+ ; VEC4_INTERL2-NEXT: entry:
1668
+ ; VEC4_INTERL2-NEXT: br i1 false, label [[SCALAR_PH:%.*]], label [[VECTOR_PH:%.*]]
1669
+ ; VEC4_INTERL2: vector.ph:
1670
+ ; VEC4_INTERL2-NEXT: br label [[VECTOR_BODY:%.*]]
1671
+ ; VEC4_INTERL2: vector.body:
1672
+ ; VEC4_INTERL2-NEXT: [[INDEX:%.*]] = phi i64 [ 0, [[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], [[VECTOR_BODY]] ]
1673
+ ; VEC4_INTERL2-NEXT: [[TMP0:%.*]] = getelementptr float, ptr null, i64 [[INDEX]]
1674
+ ; VEC4_INTERL2-NEXT: [[TMP1:%.*]] = getelementptr i8, ptr [[TMP0]], i64 16
1675
+ ; VEC4_INTERL2-NEXT: store <4 x float> poison, ptr [[TMP0]], align 8
1676
+ ; VEC4_INTERL2-NEXT: store <4 x float> zeroinitializer, ptr [[TMP1]], align 8
1677
+ ; VEC4_INTERL2-NEXT: [[INDEX_NEXT]] = add nuw i64 [[INDEX]], 8
1678
+ ; VEC4_INTERL2-NEXT: [[TMP2:%.*]] = icmp eq i64 [[INDEX_NEXT]], 200
1679
+ ; VEC4_INTERL2-NEXT: br i1 [[TMP2]], label [[MIDDLE_BLOCK:%.*]], label [[VECTOR_BODY]], !llvm.loop [[LOOP15:![0-9]+]]
1680
+ ; VEC4_INTERL2: middle.block:
1681
+ ; VEC4_INTERL2-NEXT: br i1 true, label [[EXIT:%.*]], label [[SCALAR_PH]]
1682
+ ; VEC4_INTERL2: scalar.ph:
1683
+ ; VEC4_INTERL2-NEXT: br label [[LOOP:%.*]]
1684
+ ; VEC4_INTERL2: loop:
1685
+ ; VEC4_INTERL2-NEXT: br i1 poison, label [[EXIT]], label [[LOOP]], !llvm.loop [[LOOP16:![0-9]+]]
1686
+ ; VEC4_INTERL2: exit:
1687
+ ; VEC4_INTERL2-NEXT: ret i32 0
1688
+ ;
1689
+ ; VEC1_INTERL2-LABEL: @float_induction_with_dbg_on_fadd(
1690
+ ; VEC1_INTERL2-NEXT: entry:
1691
+ ; VEC1_INTERL2-NEXT: br i1 false, label [[SCALAR_PH:%.*]], label [[VECTOR_PH:%.*]]
1692
+ ; VEC1_INTERL2: vector.ph:
1693
+ ; VEC1_INTERL2-NEXT: br label [[VECTOR_BODY:%.*]]
1694
+ ; VEC1_INTERL2: vector.body:
1695
+ ; VEC1_INTERL2-NEXT: [[INDEX:%.*]] = phi i64 [ 0, [[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], [[VECTOR_BODY]] ]
1696
+ ; VEC1_INTERL2-NEXT: [[TMP0:%.*]] = or disjoint i64 [[INDEX]], 1
1697
+ ; VEC1_INTERL2-NEXT: [[TMP1:%.*]] = getelementptr float, ptr null, i64 [[INDEX]]
1698
+ ; VEC1_INTERL2-NEXT: [[TMP2:%.*]] = getelementptr float, ptr null, i64 [[TMP0]]
1699
+ ; VEC1_INTERL2-NEXT: store float poison, ptr [[TMP1]], align 8
1700
+ ; VEC1_INTERL2-NEXT: store float poison, ptr [[TMP2]], align 8
1701
+ ; VEC1_INTERL2-NEXT: [[INDEX_NEXT]] = add nuw i64 [[INDEX]], 2
1702
+ ; VEC1_INTERL2-NEXT: [[TMP3:%.*]] = icmp eq i64 [[INDEX_NEXT]], 200
1703
+ ; VEC1_INTERL2-NEXT: br i1 [[TMP3]], label [[MIDDLE_BLOCK:%.*]], label [[VECTOR_BODY]], !llvm.loop [[LOOP15:![0-9]+]]
1704
+ ; VEC1_INTERL2: middle.block:
1705
+ ; VEC1_INTERL2-NEXT: br i1 true, label [[EXIT:%.*]], label [[SCALAR_PH]]
1706
+ ; VEC1_INTERL2: scalar.ph:
1707
+ ; VEC1_INTERL2-NEXT: br label [[LOOP:%.*]]
1708
+ ; VEC1_INTERL2: loop:
1709
+ ; VEC1_INTERL2-NEXT: br i1 poison, label [[EXIT]], label [[LOOP]], !llvm.loop [[LOOP16:![0-9]+]]
1710
+ ; VEC1_INTERL2: exit:
1711
+ ; VEC1_INTERL2-NEXT: ret i32 0
1712
+ ;
1713
+ ; VEC2_INTERL1_PRED_STORE-LABEL: @float_induction_with_dbg_on_fadd(
1714
+ ; VEC2_INTERL1_PRED_STORE-NEXT: entry:
1715
+ ; VEC2_INTERL1_PRED_STORE-NEXT: br label [[VECTOR_BODY:%.*]]
1716
+ ; VEC2_INTERL1_PRED_STORE: vector.body:
1717
+ ; VEC2_INTERL1_PRED_STORE-NEXT: [[INDEX:%.*]] = phi i64 [ 0, [[ENTRY:%.*]] ], [ [[INDEX_NEXT:%.*]], [[VECTOR_BODY]] ]
1718
+ ; VEC2_INTERL1_PRED_STORE-NEXT: [[TMP0:%.*]] = getelementptr float, ptr null, i64 [[INDEX]]
1719
+ ; VEC2_INTERL1_PRED_STORE-NEXT: store <2 x float> poison, ptr [[TMP0]], align 8
1720
+ ; VEC2_INTERL1_PRED_STORE-NEXT: [[INDEX_NEXT]] = add nuw i64 [[INDEX]], 2
1721
+ ; VEC2_INTERL1_PRED_STORE-NEXT: [[TMP1:%.*]] = icmp eq i64 [[INDEX_NEXT]], 200
1722
+ ; VEC2_INTERL1_PRED_STORE-NEXT: br i1 [[TMP1]], label [[EXIT:%.*]], label [[VECTOR_BODY]], !llvm.loop [[LOOP15:![0-9]+]]
1723
+ ; VEC2_INTERL1_PRED_STORE: exit:
1724
+ ; VEC2_INTERL1_PRED_STORE-NEXT: ret i32 0
1725
+ ;
1726
+ entry:
1727
+ br label %loop
1728
+
1729
+ loop:
1730
+ %fp.iv = phi float [ 0 .000000e+00 , %entry ], [ %fp.iv.next , %loop ], !dbg !4
1731
+ %iv = phi i64 [ 0 , %entry ], [ %iv.next , %loop ]
1732
+ %fp.iv.next = fadd reassoc float %fp.iv , 0 .000000e+00
1733
+ %gep = getelementptr float , ptr null , i64 %iv
1734
+ store float %fp.iv.next , ptr %gep , align 8
1735
+ %iv.next = add i64 %iv , 1
1736
+ %exitcond.not = icmp eq i64 %iv.next , 200
1737
+ br i1 %exitcond.not , label %exit , label %loop
1738
+
1739
+ exit:
1740
+ ret i32 0
1741
+ }
1742
+
1743
+ !llvm.module.flags = !{!3 }
1744
+
1745
+ !0 = distinct !DICompileUnit (language: DW_LANG_C11, file: !1 )
1746
+ !1 = !DIFile (filename: "bbi-99425.c" , directory: "/tmp" )
1747
+ !2 = !{}
1748
+ !3 = !{i32 2 , !"Debug Info Version" , i32 3 }
1749
+ !4 = !DILocation (line: 5 , column: 12 , scope: !8 )
1750
+ !8 = distinct !DISubprogram (name: "main" , scope: !1 , file: !1 , line: 3 , type: !9 , unit: !0 , retainedNodes: !2 )
1751
+ !9 = !DISubroutineType (types: !2 )
0 commit comments