@@ -43,7 +43,7 @@ define void @cost_store_i8(ptr %dst) #0 {
4343; DEFAULT-NEXT: [[TMP12:%.*]] = call i64 @llvm.vscale.i64()
4444; DEFAULT-NEXT: [[TMP13:%.*]] = shl nuw i64 [[TMP12]], 3
4545; DEFAULT-NEXT: [[MIN_EPILOG_ITERS_CHECK:%.*]] = icmp ult i64 [[N_VEC_REMAINING]], [[TMP13]]
46- ; DEFAULT-NEXT: br i1 [[MIN_EPILOG_ITERS_CHECK]], label [[VEC_EPILOG_SCALAR_PH]], label [[VEC_EPILOG_PH]]
46+ ; DEFAULT-NEXT: br i1 [[MIN_EPILOG_ITERS_CHECK]], label [[VEC_EPILOG_SCALAR_PH]], label [[VEC_EPILOG_PH]], !prof [[PROF3:![0-9]+]]
4747; DEFAULT: vec.epilog.ph:
4848; DEFAULT-NEXT: [[VEC_EPILOG_RESUME_VAL:%.*]] = phi i64 [ [[N_VEC]], [[VEC_EPILOG_ITER_CHECK]] ], [ 0, [[VECTOR_MAIN_LOOP_ITER_CHECK]] ]
4949; DEFAULT-NEXT: [[TMP14:%.*]] = call i64 @llvm.vscale.i64()
@@ -57,7 +57,7 @@ define void @cost_store_i8(ptr %dst) #0 {
5757; DEFAULT-NEXT: store <vscale x 8 x i8> zeroinitializer, ptr [[TMP19]], align 1
5858; DEFAULT-NEXT: [[INDEX_NEXT6]] = add nuw i64 [[INDEX5]], [[TMP15]]
5959; DEFAULT-NEXT: [[TMP21:%.*]] = icmp eq i64 [[INDEX_NEXT6]], [[N_VEC3]]
60- ; DEFAULT-NEXT: br i1 [[TMP21]], label [[VEC_EPILOG_MIDDLE_BLOCK:%.*]], label [[VEC_EPILOG_VECTOR_BODY]], !llvm.loop [[LOOP3 :![0-9]+]]
60+ ; DEFAULT-NEXT: br i1 [[TMP21]], label [[VEC_EPILOG_MIDDLE_BLOCK:%.*]], label [[VEC_EPILOG_VECTOR_BODY]], !llvm.loop [[LOOP4 :![0-9]+]]
6161; DEFAULT: vec.epilog.middle.block:
6262; DEFAULT-NEXT: [[CMP_N4:%.*]] = icmp eq i64 101, [[N_VEC3]]
6363; DEFAULT-NEXT: br i1 [[CMP_N4]], label [[EXIT]], label [[VEC_EPILOG_SCALAR_PH]]
@@ -70,7 +70,7 @@ define void @cost_store_i8(ptr %dst) #0 {
7070; DEFAULT-NEXT: store i8 0, ptr [[GEP]], align 1
7171; DEFAULT-NEXT: [[IV_NEXT]] = add i64 [[IV]], 1
7272; DEFAULT-NEXT: [[EC:%.*]] = icmp eq i64 [[IV]], 100
73- ; DEFAULT-NEXT: br i1 [[EC]], label [[EXIT]], label [[LOOP]], !llvm.loop [[LOOP4 :![0-9]+]]
73+ ; DEFAULT-NEXT: br i1 [[EC]], label [[EXIT]], label [[LOOP]], !llvm.loop [[LOOP5 :![0-9]+]]
7474; DEFAULT: exit:
7575; DEFAULT-NEXT: ret void
7676;
@@ -148,22 +148,22 @@ define void @trunc_store(ptr %dst, ptr %src, i16 %x) #1 {
148148; DEFAULT-NEXT: br label [[VECTOR_BODY:%.*]]
149149; DEFAULT: vector.body:
150150; DEFAULT-NEXT: [[INDEX:%.*]] = phi i64 [ 0, [[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], [[VECTOR_BODY]] ]
151- ; DEFAULT-NEXT: [[TMP4:%.*]] = load i64, ptr [[SRC]], align 8, !alias.scope [[META5 :![0-9]+]]
151+ ; DEFAULT-NEXT: [[TMP4:%.*]] = load i64, ptr [[SRC]], align 8, !alias.scope [[META6 :![0-9]+]]
152152; DEFAULT-NEXT: [[BROADCAST_SPLATINSERT1:%.*]] = insertelement <16 x i64> poison, i64 [[TMP4]], i64 0
153153; DEFAULT-NEXT: [[BROADCAST_SPLAT2:%.*]] = shufflevector <16 x i64> [[BROADCAST_SPLATINSERT1]], <16 x i64> poison, <16 x i32> zeroinitializer
154154; DEFAULT-NEXT: [[TMP5:%.*]] = trunc <16 x i64> [[BROADCAST_SPLAT2]] to <16 x i8>
155155; DEFAULT-NEXT: [[TMP9:%.*]] = and <16 x i8> [[TMP5]], [[TMP7]]
156156; DEFAULT-NEXT: [[TMP10:%.*]] = getelementptr i8, ptr [[DST]], i64 [[INDEX]]
157157; DEFAULT-NEXT: [[TMP13:%.*]] = getelementptr i8, ptr [[TMP10]], i32 16
158- ; DEFAULT-NEXT: store <16 x i8> [[TMP9]], ptr [[TMP10]], align 1, !alias.scope [[META8 :![0-9]+]], !noalias [[META5 ]]
159- ; DEFAULT-NEXT: store <16 x i8> [[TMP9]], ptr [[TMP13]], align 1, !alias.scope [[META8 ]], !noalias [[META5 ]]
158+ ; DEFAULT-NEXT: store <16 x i8> [[TMP9]], ptr [[TMP10]], align 1, !alias.scope [[META9 :![0-9]+]], !noalias [[META6 ]]
159+ ; DEFAULT-NEXT: store <16 x i8> [[TMP9]], ptr [[TMP13]], align 1, !alias.scope [[META9 ]], !noalias [[META6 ]]
160160; DEFAULT-NEXT: [[INDEX_NEXT]] = add nuw i64 [[INDEX]], 32
161161; DEFAULT-NEXT: [[TMP11:%.*]] = icmp eq i64 [[INDEX_NEXT]], 992
162- ; DEFAULT-NEXT: br i1 [[TMP11]], label [[MIDDLE_BLOCK:%.*]], label [[VECTOR_BODY]], !llvm.loop [[LOOP10 :![0-9]+]]
162+ ; DEFAULT-NEXT: br i1 [[TMP11]], label [[MIDDLE_BLOCK:%.*]], label [[VECTOR_BODY]], !llvm.loop [[LOOP11 :![0-9]+]]
163163; DEFAULT: middle.block:
164164; DEFAULT-NEXT: br i1 false, label [[EXIT:%.*]], label [[VEC_EPILOG_ITER_CHECK:%.*]]
165165; DEFAULT: vec.epilog.iter.check:
166- ; DEFAULT-NEXT: br i1 false, label [[VEC_EPILOG_SCALAR_PH]], label [[VEC_EPILOG_PH]]
166+ ; DEFAULT-NEXT: br i1 false, label [[VEC_EPILOG_SCALAR_PH]], label [[VEC_EPILOG_PH]], !prof [[PROF3]]
167167; DEFAULT: vec.epilog.ph:
168168; DEFAULT-NEXT: [[VEC_EPILOG_RESUME_VAL:%.*]] = phi i64 [ 992, [[VEC_EPILOG_ITER_CHECK]] ], [ 0, [[VECTOR_MAIN_LOOP_ITER_CHECK]] ]
169169; DEFAULT-NEXT: [[BROADCAST_SPLATINSERT4:%.*]] = insertelement <8 x i16> poison, i16 [[X]], i64 0
@@ -172,16 +172,16 @@ define void @trunc_store(ptr %dst, ptr %src, i16 %x) #1 {
172172; DEFAULT-NEXT: br label [[VEC_EPILOG_VECTOR_BODY:%.*]]
173173; DEFAULT: vec.epilog.vector.body:
174174; DEFAULT-NEXT: [[INDEX5:%.*]] = phi i64 [ [[VEC_EPILOG_RESUME_VAL]], [[VEC_EPILOG_PH]] ], [ [[INDEX_NEXT8:%.*]], [[VEC_EPILOG_VECTOR_BODY]] ]
175- ; DEFAULT-NEXT: [[TMP16:%.*]] = load i64, ptr [[SRC]], align 8, !alias.scope [[META5 ]]
175+ ; DEFAULT-NEXT: [[TMP16:%.*]] = load i64, ptr [[SRC]], align 8, !alias.scope [[META6 ]]
176176; DEFAULT-NEXT: [[BROADCAST_SPLATINSERT7:%.*]] = insertelement <8 x i64> poison, i64 [[TMP16]], i64 0
177177; DEFAULT-NEXT: [[BROADCAST_SPLAT8:%.*]] = shufflevector <8 x i64> [[BROADCAST_SPLATINSERT7]], <8 x i64> poison, <8 x i32> zeroinitializer
178178; DEFAULT-NEXT: [[TMP18:%.*]] = trunc <8 x i64> [[BROADCAST_SPLAT8]] to <8 x i8>
179179; DEFAULT-NEXT: [[TMP14:%.*]] = and <8 x i8> [[TMP18]], [[TMP15]]
180180; DEFAULT-NEXT: [[TMP26:%.*]] = getelementptr i8, ptr [[DST]], i64 [[INDEX5]]
181- ; DEFAULT-NEXT: store <8 x i8> [[TMP14]], ptr [[TMP26]], align 1, !alias.scope [[META8 ]], !noalias [[META5 ]]
181+ ; DEFAULT-NEXT: store <8 x i8> [[TMP14]], ptr [[TMP26]], align 1, !alias.scope [[META9 ]], !noalias [[META6 ]]
182182; DEFAULT-NEXT: [[INDEX_NEXT8]] = add nuw i64 [[INDEX5]], 8
183183; DEFAULT-NEXT: [[TMP17:%.*]] = icmp eq i64 [[INDEX_NEXT8]], 1000
184- ; DEFAULT-NEXT: br i1 [[TMP17]], label [[VEC_EPILOG_MIDDLE_BLOCK:%.*]], label [[VEC_EPILOG_VECTOR_BODY]], !llvm.loop [[LOOP11 :![0-9]+]]
184+ ; DEFAULT-NEXT: br i1 [[TMP17]], label [[VEC_EPILOG_MIDDLE_BLOCK:%.*]], label [[VEC_EPILOG_VECTOR_BODY]], !llvm.loop [[LOOP12 :![0-9]+]]
185185; DEFAULT: vec.epilog.middle.block:
186186; DEFAULT-NEXT: br i1 true, label [[EXIT]], label [[VEC_EPILOG_SCALAR_PH]]
187187; DEFAULT: vec.epilog.scalar.ph:
@@ -197,7 +197,7 @@ define void @trunc_store(ptr %dst, ptr %src, i16 %x) #1 {
197197; DEFAULT-NEXT: store i8 [[TRUNC]], ptr [[GEP]], align 1
198198; DEFAULT-NEXT: [[IV_NEXT]] = add i64 [[IV]], 1
199199; DEFAULT-NEXT: [[EC:%.*]] = icmp eq i64 [[IV_NEXT]], 1000
200- ; DEFAULT-NEXT: br i1 [[EC]], label [[EXIT]], label [[LOOP]], !llvm.loop [[LOOP12 :![0-9]+]]
200+ ; DEFAULT-NEXT: br i1 [[EC]], label [[EXIT]], label [[LOOP]], !llvm.loop [[LOOP13 :![0-9]+]]
201201; DEFAULT: exit:
202202; DEFAULT-NEXT: ret void
203203;
@@ -281,16 +281,17 @@ attributes #1 = { vscale_range(1,16) "target-features"="+sve" }
281281; DEFAULT: [[LOOP0]] = distinct !{[[LOOP0]], [[META1:![0-9]+]], [[META2:![0-9]+]]}
282282; DEFAULT: [[META1]] = !{!"llvm.loop.isvectorized", i32 1}
283283; DEFAULT: [[META2]] = !{!"llvm.loop.unroll.runtime.disable"}
284- ; DEFAULT: [[LOOP3 ]] = distinct !{[[LOOP3]], [[META1]], [[META2]] }
285- ; DEFAULT: [[LOOP4]] = distinct !{[[LOOP4]], [[META2 ]], [[META1 ]]}
286- ; DEFAULT: [[META5 ]] = !{[[META6:![0-9]+ ]]}
287- ; DEFAULT: [[META6]] = distinct !{[[META6]], [[META7:![0-9]+]]}
288- ; DEFAULT: [[META7]] = distinct !{[[META7]], !"LVerDomain" }
289- ; DEFAULT: [[META8]] = !{[[META9:![0-9]+]] }
290- ; DEFAULT: [[META9]] = distinct !{[[META9]], [[META7 ]]}
291- ; DEFAULT: [[LOOP10 ]] = distinct !{[[LOOP10 ]], [[META1]], [[META2 ]]}
284+ ; DEFAULT: [[PROF3 ]] = !{!"branch_weights", i32 8, i32 24 }
285+ ; DEFAULT: [[LOOP4]] = distinct !{[[LOOP4]], [[META1 ]], [[META2 ]]}
286+ ; DEFAULT: [[LOOP5 ]] = distinct !{[[LOOP5]], [[META2]], [[META1 ]]}
287+ ; DEFAULT: [[META6]] = !{ [[META7:![0-9]+]]}
288+ ; DEFAULT: [[META7]] = distinct !{[[META7]], [[META8:![0-9]+]] }
289+ ; DEFAULT: [[META8]] = distinct !{[[META8]], !"LVerDomain" }
290+ ; DEFAULT: [[META9]] = !{[[META10:![0-9]+ ]]}
291+ ; DEFAULT: [[META10 ]] = distinct !{[[META10 ]], [[META8 ]]}
292292; DEFAULT: [[LOOP11]] = distinct !{[[LOOP11]], [[META1]], [[META2]]}
293- ; DEFAULT: [[LOOP12]] = distinct !{[[LOOP12]], [[META1]]}
293+ ; DEFAULT: [[LOOP12]] = distinct !{[[LOOP12]], [[META1]], [[META2]]}
294+ ; DEFAULT: [[LOOP13]] = distinct !{[[LOOP13]], [[META1]]}
294295;.
295296; PRED: [[LOOP0]] = distinct !{[[LOOP0]], [[META1:![0-9]+]], [[META2:![0-9]+]]}
296297; PRED: [[META1]] = !{!"llvm.loop.isvectorized", i32 1}
0 commit comments