@@ -27,8 +27,19 @@ define void @memset_x(ptr %a, i8 %value, i64 %x) nounwind {
27
27
; CHECK-NEXT: [[TMP5:%.*]] = icmp ult i64 [[TMP4]], [[X]]
28
28
; CHECK-NEXT: br i1 [[TMP5]], label %[[LOADSTORELOOP]], label %[[SPLIT]]
29
29
; CHECK: [[SPLIT]]:
30
+ ; CHECK-NEXT: [[TMP6:%.*]] = icmp eq i64 0, [[X]]
31
+ ; CHECK-NEXT: br i1 [[TMP6]], label %[[SPLIT1:.*]], label %[[LOADSTORELOOP2:.*]]
32
+ ; CHECK: [[LOADSTORELOOP2]]:
33
+ ; CHECK-NEXT: [[TMP7:%.*]] = phi i64 [ 0, %[[SPLIT]] ], [ [[TMP9:%.*]], %[[LOADSTORELOOP2]] ]
34
+ ; CHECK-NEXT: [[TMP8:%.*]] = getelementptr inbounds i8, ptr [[A]], i64 [[TMP7]]
35
+ ; CHECK-NEXT: store volatile i8 [[VALUE]], ptr [[TMP8]], align 1
36
+ ; CHECK-NEXT: [[TMP9]] = add i64 [[TMP7]], 1
37
+ ; CHECK-NEXT: [[TMP10:%.*]] = icmp ult i64 [[TMP9]], [[X]]
38
+ ; CHECK-NEXT: br i1 [[TMP10]], label %[[LOADSTORELOOP2]], label %[[SPLIT1]]
39
+ ; CHECK: [[SPLIT1]]:
30
40
; CHECK-NEXT: ret void
31
41
;
32
- tail call void @llvm.memset.inline.p0.i64 (ptr %a , i8 %value , i64 %x , i1 0 )
42
+ call void @llvm.memset.inline.p0.i64 (ptr %a , i8 %value , i64 %x , i1 0 )
43
+ tail call void @llvm.memset.inline.p0.i64 (ptr %a , i8 %value , i64 %x , i1 1 )
33
44
ret void
34
45
}
0 commit comments