[llvm] [Intrinsics][PreISelInstrinsicLowering] llvm.memcpy.inline length no longer needs to be constant (PR #98281)

Matt Arsenault via llvm-commits llvm-commits at lists.llvm.org
Wed Jul 10 01:17:58 PDT 2024


================
@@ -0,0 +1,34 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
+; RUN: opt -mtriple=x86_64-pc-linux-gnu -passes=pre-isel-intrinsic-lowering -S -o - %s | FileCheck %s
+
+; Constant length memcpy.inline should be left unmodified.
+define void @memcpy_32(ptr %dst, ptr %src) nounwind {
+; CHECK-LABEL: define void @memcpy_32(
+; CHECK-SAME: ptr [[DST:%.*]], ptr [[SRC:%.*]]) #[[ATTR0:[0-9]+]] {
+; CHECK-NEXT:    tail call void @llvm.memcpy.inline.p0.p0.i64(ptr [[DST]], ptr [[SRC]], i64 32, i1 false)
+; CHECK-NEXT:    ret void
+;
+  tail call void @llvm.memcpy.inline.p0.p0.i64(ptr %dst, ptr %src, i64 32, i1 0)
+  ret void
+}
+
----------------
arsenm wrote:

Test a volatile case to make sure that doesn't get dropped?

https://github.com/llvm/llvm-project/pull/98281


More information about the llvm-commits mailing list