Skip to content

Commit 4f0ebe0

Browse files
committed
[PreISelIntrinsicLowering][test] Test that the expanded memset.inline doesn't drop volatile flag
As suggested in the discussion for #98281.
1 parent 9b95d08 commit 4f0ebe0

File tree

1 file changed

+12
-1
lines changed

1 file changed

+12
-1
lines changed

llvm/test/Transforms/PreISelIntrinsicLowering/X86/memset-inline-non-constant-len.ll

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,19 @@ define void @memset_x(ptr %a, i8 %value, i64 %x) nounwind {
2727
; CHECK-NEXT: [[TMP5:%.*]] = icmp ult i64 [[TMP4]], [[X]]
2828
; CHECK-NEXT: br i1 [[TMP5]], label %[[LOADSTORELOOP]], label %[[SPLIT]]
2929
; 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]]:
3040
; CHECK-NEXT: ret void
3141
;
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)
3344
ret void
3445
}

0 commit comments

Comments
 (0)