1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py 2; RUN: opt -dse -S %s | FileCheck %s 3 4define void @memset_equal_size_values(i8* %ptr, i64 %len) { 5; CHECK-LABEL: @memset_equal_size_values( 6; CHECK-NEXT: call void @llvm.memset.p0i8.i64(i8* align 1 [[PTR:%.*]], i8 0, i64 [[LEN:%.*]], i1 false) 7; CHECK-NEXT: ret void 8; 9 call void @llvm.memset.p0i8.i64(i8* align 1 %ptr, i8 0, i64 %len, i1 false) 10 call void @llvm.memset.p0i8.i64(i8* align 1 %ptr, i8 0, i64 %len, i1 false) 11 ret void 12} 13 14define void @memset_different_size_values_1(i8* %ptr, i64 %len.1, i64 %len.2) { 15; CHECK-LABEL: @memset_different_size_values_1( 16; CHECK-NEXT: call void @llvm.memset.p0i8.i64(i8* align 1 [[PTR:%.*]], i8 0, i64 [[LEN_1:%.*]], i1 false) 17; CHECK-NEXT: call void @llvm.memset.p0i8.i64(i8* align 1 [[PTR]], i8 0, i64 [[LEN_2:%.*]], i1 false) 18; CHECK-NEXT: ret void 19; 20 call void @llvm.memset.p0i8.i64(i8* align 1 %ptr, i8 0, i64 %len.1, i1 false) 21 call void @llvm.memset.p0i8.i64(i8* align 1 %ptr, i8 0, i64 %len.2, i1 false) 22 ret void 23} 24 25define void @memset_different_size_values_2(i8* %ptr, i64 %len) { 26; CHECK-LABEL: @memset_different_size_values_2( 27; CHECK-NEXT: call void @llvm.memset.p0i8.i64(i8* align 1 [[PTR:%.*]], i8 0, i64 [[LEN:%.*]], i1 false) 28; CHECK-NEXT: call void @llvm.memset.p0i8.i64(i8* align 1 [[PTR]], i8 0, i64 100, i1 false) 29; CHECK-NEXT: ret void 30; 31 call void @llvm.memset.p0i8.i64(i8* align 1 %ptr, i8 0, i64 %len, i1 false) 32 call void @llvm.memset.p0i8.i64(i8* align 1 %ptr, i8 0, i64 100, i1 false) 33 ret void 34} 35 36define void @memset_different_size_values_3(i8* %ptr, i64 %len) { 37; CHECK-LABEL: @memset_different_size_values_3( 38; CHECK-NEXT: call void @llvm.memset.p0i8.i64(i8* align 1 [[PTR:%.*]], i8 0, i64 100, i1 false) 39; CHECK-NEXT: call void @llvm.memset.p0i8.i64(i8* align 1 [[PTR]], i8 0, i64 [[LEN:%.*]], i1 false) 40; CHECK-NEXT: ret void 41; 42 call void @llvm.memset.p0i8.i64(i8* align 1 %ptr, i8 0, i64 100, i1 false) 43 call void @llvm.memset.p0i8.i64(i8* align 1 %ptr, i8 0, i64 %len, i1 false) 44 ret void 45} 46 47define void @memset_and_store_1(i8* %ptr, i64 %len) { 48; CHECK-LABEL: @memset_and_store_1( 49; CHECK-NEXT: [[BC:%.*]] = bitcast i8* [[PTR:%.*]] to i64* 50; CHECK-NEXT: store i64 123, i64* [[BC]], align 4 51; CHECK-NEXT: call void @llvm.memset.p0i8.i64(i8* align 1 [[PTR]], i8 0, i64 [[LEN:%.*]], i1 false) 52; CHECK-NEXT: ret void 53; 54 %bc = bitcast i8* %ptr to i64* 55 store i64 123, i64* %bc 56 call void @llvm.memset.p0i8.i64(i8* align 1 %ptr, i8 0, i64 %len, i1 false) 57 ret void 58} 59 60define void @memset_and_store_2(i8* %ptr, i64 %len) { 61; CHECK-LABEL: @memset_and_store_2( 62; CHECK-NEXT: [[BC:%.*]] = bitcast i8* [[PTR:%.*]] to i64* 63; CHECK-NEXT: call void @llvm.memset.p0i8.i64(i8* align 1 [[PTR]], i8 0, i64 [[LEN:%.*]], i1 false) 64; CHECK-NEXT: store i64 123, i64* [[BC]], align 4 65; CHECK-NEXT: ret void 66; 67 %bc = bitcast i8* %ptr to i64* 68 call void @llvm.memset.p0i8.i64(i8* align 1 %ptr, i8 0, i64 %len, i1 false) 69 store i64 123, i64* %bc 70 ret void 71} 72 73define void @memcpy_equal_size_values(i8* noalias %src, i8* noalias %dst, i64 %len) { 74; CHECK-LABEL: @memcpy_equal_size_values( 75; CHECK-NEXT: call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[DST:%.*]], i8* [[SRC:%.*]], i64 [[LEN:%.*]], i1 false) 76; CHECK-NEXT: ret void 77; 78 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %dst, i8* %src, i64 %len, i1 false) 79 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %dst, i8* %src, i64 %len, i1 false) 80 ret void 81} 82 83define void @memcpy_different_size_values_1(i8* noalias %src, i8* noalias %dst, i64 %len.1, i64 %len.2) { 84; CHECK-LABEL: @memcpy_different_size_values_1( 85; CHECK-NEXT: call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[DST:%.*]], i8* [[SRC:%.*]], i64 [[LEN_1:%.*]], i1 false) 86; CHECK-NEXT: call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[DST]], i8* [[SRC]], i64 [[LEN_2:%.*]], i1 false) 87; CHECK-NEXT: ret void 88; 89 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %dst, i8* %src, i64 %len.1, i1 false) 90 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %dst, i8* %src, i64 %len.2, i1 false) 91 ret void 92} 93 94define void @memcpy_different_size_values_2(i8* noalias %src, i8* noalias %dst, i64 %len) { 95; CHECK-LABEL: @memcpy_different_size_values_2( 96; CHECK-NEXT: call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[DST:%.*]], i8* [[SRC:%.*]], i64 [[LEN:%.*]], i1 false) 97; CHECK-NEXT: call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[DST]], i8* [[SRC]], i64 100, i1 false) 98; CHECK-NEXT: ret void 99; 100 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %dst, i8* %src, i64 %len, i1 false) 101 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %dst, i8* %src, i64 100, i1 false) 102 ret void 103} 104 105define void @memcpy_different_size_values_3(i8* noalias %src, i8* noalias %dst, i64 %len) { 106; CHECK-LABEL: @memcpy_different_size_values_3( 107; CHECK-NEXT: call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[DST:%.*]], i8* [[SRC:%.*]], i64 100, i1 false) 108; CHECK-NEXT: call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[DST]], i8* [[SRC]], i64 [[LEN:%.*]], i1 false) 109; CHECK-NEXT: ret void 110; 111 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %dst, i8* %src, i64 100, i1 false) 112 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %dst, i8* %src, i64 %len, i1 false) 113 ret void 114} 115 116define void @memset_and_memcpy_equal_size_values(i8* noalias %src, i8* noalias %dst, i64 %len) { 117; CHECK-LABEL: @memset_and_memcpy_equal_size_values( 118; CHECK-NEXT: call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[DST:%.*]], i8* [[SRC:%.*]], i64 [[LEN:%.*]], i1 false) 119; CHECK-NEXT: ret void 120; 121 call void @llvm.memset.p0i8.i64(i8* align 1 %dst, i8 0, i64 %len, i1 false) 122 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %dst, i8* %src, i64 %len, i1 false) 123 ret void 124} 125 126define void @memset_and_memcpy_different_size_values_1(i8* noalias %src, i8* noalias %dst, i64 %len.1, i64 %len.2) { 127; CHECK-LABEL: @memset_and_memcpy_different_size_values_1( 128; CHECK-NEXT: call void @llvm.memset.p0i8.i64(i8* align 1 [[DST:%.*]], i8 0, i64 [[LEN_1:%.*]], i1 false) 129; CHECK-NEXT: call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[DST]], i8* [[SRC:%.*]], i64 [[LEN_2:%.*]], i1 false) 130; CHECK-NEXT: ret void 131; 132 call void @llvm.memset.p0i8.i64(i8* align 1 %dst, i8 0, i64 %len.1, i1 false) 133 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %dst, i8* %src, i64 %len.2, i1 false) 134 ret void 135} 136 137define void @memset_and_memcpy_different_size_values_2(i8* noalias %src, i8* noalias %dst, i64 %len.1) { 138; CHECK-LABEL: @memset_and_memcpy_different_size_values_2( 139; CHECK-NEXT: call void @llvm.memset.p0i8.i64(i8* align 1 [[DST:%.*]], i8 0, i64 [[LEN_1:%.*]], i1 false) 140; CHECK-NEXT: call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[DST]], i8* [[SRC:%.*]], i64 100, i1 false) 141; CHECK-NEXT: ret void 142; 143 call void @llvm.memset.p0i8.i64(i8* align 1 %dst, i8 0, i64 %len.1, i1 false) 144 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %dst, i8* %src, i64 100, i1 false) 145 ret void 146} 147 148define void @memset_and_memcpy_different_size_values_3(i8* noalias %src, i8* noalias %dst, i64 %len.1) { 149; CHECK-LABEL: @memset_and_memcpy_different_size_values_3( 150; CHECK-NEXT: call void @llvm.memset.p0i8.i64(i8* align 1 [[DST:%.*]], i8 0, i64 100, i1 false) 151; CHECK-NEXT: call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[DST]], i8* [[SRC:%.*]], i64 [[LEN_1:%.*]], i1 false) 152; CHECK-NEXT: ret void 153; 154 call void @llvm.memset.p0i8.i64(i8* align 1 %dst, i8 0, i64 100, i1 false) 155 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %dst, i8* %src, i64 %len.1, i1 false) 156 ret void 157} 158 159define void @memcpy_and_memset_equal_size_values(i8* noalias %src, i8* noalias %dst, i64 %len) { 160; CHECK-LABEL: @memcpy_and_memset_equal_size_values( 161; CHECK-NEXT: call void @llvm.memset.p0i8.i64(i8* align 1 [[DST:%.*]], i8 0, i64 [[LEN:%.*]], i1 false) 162; CHECK-NEXT: ret void 163; 164 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %dst, i8* %src, i64 %len, i1 false) 165 call void @llvm.memset.p0i8.i64(i8* align 1 %dst, i8 0, i64 %len, i1 false) 166 ret void 167} 168 169define void @memcpy_and_memset_different_size_values_1(i8* noalias %src, i8* noalias %dst, i64 %len.1, i64 %len.2) { 170; CHECK-LABEL: @memcpy_and_memset_different_size_values_1( 171; CHECK-NEXT: call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[DST:%.*]], i8* [[SRC:%.*]], i64 [[LEN_1:%.*]], i1 false) 172; CHECK-NEXT: call void @llvm.memset.p0i8.i64(i8* align 1 [[DST]], i8 0, i64 [[LEN_2:%.*]], i1 false) 173; CHECK-NEXT: ret void 174; 175 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %dst, i8* %src, i64 %len.1, i1 false) 176 call void @llvm.memset.p0i8.i64(i8* align 1 %dst, i8 0, i64 %len.2, i1 false) 177 ret void 178} 179 180define void @memcpy_and_memset_different_size_values_2(i8* noalias %src, i8* noalias %dst, i64 %len.1) { 181; CHECK-LABEL: @memcpy_and_memset_different_size_values_2( 182; CHECK-NEXT: call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[DST:%.*]], i8* [[SRC:%.*]], i64 [[LEN_1:%.*]], i1 false) 183; CHECK-NEXT: call void @llvm.memset.p0i8.i64(i8* align 1 [[DST]], i8 0, i64 100, i1 false) 184; CHECK-NEXT: ret void 185; 186 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %dst, i8* %src, i64 %len.1, i1 false) 187 call void @llvm.memset.p0i8.i64(i8* align 1 %dst, i8 0, i64 100, i1 false) 188 ret void 189} 190 191define void @memcpy_and_memset_different_size_values_3(i8* noalias %src, i8* noalias %dst, i64 %len.1) { 192; CHECK-LABEL: @memcpy_and_memset_different_size_values_3( 193; CHECK-NEXT: call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[DST:%.*]], i8* [[SRC:%.*]], i64 100, i1 false) 194; CHECK-NEXT: call void @llvm.memset.p0i8.i64(i8* align 1 [[DST]], i8 0, i64 [[LEN_1:%.*]], i1 false) 195; CHECK-NEXT: ret void 196; 197 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %dst, i8* %src, i64 100, i1 false) 198 call void @llvm.memset.p0i8.i64(i8* align 1 %dst, i8 0, i64 %len.1, i1 false) 199 ret void 200} 201 202define void @memmove_equal_size_values(i8* noalias %src, i8* noalias %dst, i64 %len) { 203; CHECK-LABEL: @memmove_equal_size_values( 204; CHECK-NEXT: call void @llvm.memmove.p0i8.p0i8.i64(i8* [[DST:%.*]], i8* [[SRC:%.*]], i64 [[LEN:%.*]], i1 false) 205; CHECK-NEXT: ret void 206; 207 call void @llvm.memmove.p0i8.p0i8.i64(i8* %dst, i8* %src, i64 %len, i1 false) 208 call void @llvm.memmove.p0i8.p0i8.i64(i8* %dst, i8* %src, i64 %len, i1 false) 209 ret void 210} 211 212define void @memmove_different_size_values_1(i8* noalias %src, i8* noalias %dst, i64 %len.1, i64 %len.2) { 213; CHECK-LABEL: @memmove_different_size_values_1( 214; CHECK-NEXT: call void @llvm.memmove.p0i8.p0i8.i64(i8* [[DST:%.*]], i8* [[SRC:%.*]], i64 [[LEN_1:%.*]], i1 false) 215; CHECK-NEXT: call void @llvm.memmove.p0i8.p0i8.i64(i8* [[DST]], i8* [[SRC]], i64 [[LEN_2:%.*]], i1 false) 216; CHECK-NEXT: ret void 217; 218 call void @llvm.memmove.p0i8.p0i8.i64(i8* %dst, i8* %src, i64 %len.1, i1 false) 219 call void @llvm.memmove.p0i8.p0i8.i64(i8* %dst, i8* %src, i64 %len.2, i1 false) 220 ret void 221} 222 223define void @memmove_different_size_values_2(i8* noalias %src, i8* noalias %dst, i64 %len) { 224; CHECK-LABEL: @memmove_different_size_values_2( 225; CHECK-NEXT: call void @llvm.memmove.p0i8.p0i8.i64(i8* [[DST:%.*]], i8* [[SRC:%.*]], i64 [[LEN:%.*]], i1 false) 226; CHECK-NEXT: call void @llvm.memmove.p0i8.p0i8.i64(i8* [[DST]], i8* [[SRC]], i64 100, i1 false) 227; CHECK-NEXT: ret void 228; 229 call void @llvm.memmove.p0i8.p0i8.i64(i8* %dst, i8* %src, i64 %len, i1 false) 230 call void @llvm.memmove.p0i8.p0i8.i64(i8* %dst, i8* %src, i64 100, i1 false) 231 ret void 232} 233 234define void @memmove_different_size_values_3(i8* noalias %src, i8* noalias %dst, i64 %len) { 235; CHECK-LABEL: @memmove_different_size_values_3( 236; CHECK-NEXT: call void @llvm.memmove.p0i8.p0i8.i64(i8* [[DST:%.*]], i8* [[SRC:%.*]], i64 100, i1 false) 237; CHECK-NEXT: call void @llvm.memmove.p0i8.p0i8.i64(i8* [[DST]], i8* [[SRC]], i64 [[LEN:%.*]], i1 false) 238; CHECK-NEXT: ret void 239; 240 call void @llvm.memmove.p0i8.p0i8.i64(i8* %dst, i8* %src, i64 100, i1 false) 241 call void @llvm.memmove.p0i8.p0i8.i64(i8* %dst, i8* %src, i64 %len, i1 false) 242 ret void 243} 244 245define void @memset_and_memmove_equal_size_values(i8* noalias %src, i8* noalias %dst, i64 %len) { 246; CHECK-LABEL: @memset_and_memmove_equal_size_values( 247; CHECK-NEXT: call void @llvm.memmove.p0i8.p0i8.i64(i8* [[DST:%.*]], i8* [[SRC:%.*]], i64 [[LEN:%.*]], i1 false) 248; CHECK-NEXT: ret void 249; 250 call void @llvm.memset.p0i8.i64(i8* align 1 %dst, i8 0, i64 %len, i1 false) 251 call void @llvm.memmove.p0i8.p0i8.i64(i8* %dst, i8* %src, i64 %len, i1 false) 252 ret void 253} 254 255define void @memset_and_memmove_different_size_values_1(i8* noalias %src, i8* noalias %dst, i64 %len.1, i64 %len.2) { 256; CHECK-LABEL: @memset_and_memmove_different_size_values_1( 257; CHECK-NEXT: call void @llvm.memset.p0i8.i64(i8* align 1 [[DST:%.*]], i8 0, i64 [[LEN_1:%.*]], i1 false) 258; CHECK-NEXT: call void @llvm.memmove.p0i8.p0i8.i64(i8* [[DST]], i8* [[SRC:%.*]], i64 [[LEN_2:%.*]], i1 false) 259; CHECK-NEXT: ret void 260; 261 call void @llvm.memset.p0i8.i64(i8* align 1 %dst, i8 0, i64 %len.1, i1 false) 262 call void @llvm.memmove.p0i8.p0i8.i64(i8* %dst, i8* %src, i64 %len.2, i1 false) 263 ret void 264} 265 266define void @memset_and_memmove_different_size_values_2(i8* noalias %src, i8* noalias %dst, i64 %len.1) { 267; CHECK-LABEL: @memset_and_memmove_different_size_values_2( 268; CHECK-NEXT: call void @llvm.memset.p0i8.i64(i8* align 1 [[DST:%.*]], i8 0, i64 [[LEN_1:%.*]], i1 false) 269; CHECK-NEXT: call void @llvm.memmove.p0i8.p0i8.i64(i8* [[DST]], i8* [[SRC:%.*]], i64 100, i1 false) 270; CHECK-NEXT: ret void 271; 272 call void @llvm.memset.p0i8.i64(i8* align 1 %dst, i8 0, i64 %len.1, i1 false) 273 call void @llvm.memmove.p0i8.p0i8.i64(i8* %dst, i8* %src, i64 100, i1 false) 274 ret void 275} 276 277define void @memset_and_memmove_different_size_values_3(i8* noalias %src, i8* noalias %dst, i64 %len.1) { 278; CHECK-LABEL: @memset_and_memmove_different_size_values_3( 279; CHECK-NEXT: call void @llvm.memset.p0i8.i64(i8* align 1 [[DST:%.*]], i8 0, i64 100, i1 false) 280; CHECK-NEXT: call void @llvm.memmove.p0i8.p0i8.i64(i8* [[DST]], i8* [[SRC:%.*]], i64 [[LEN_1:%.*]], i1 false) 281; CHECK-NEXT: ret void 282; 283 call void @llvm.memset.p0i8.i64(i8* align 1 %dst, i8 0, i64 100, i1 false) 284 call void @llvm.memmove.p0i8.p0i8.i64(i8* %dst, i8* %src, i64 %len.1, i1 false) 285 ret void 286} 287 288define void @memmove_and_memset_equal_size_values(i8* noalias %src, i8* noalias %dst, i64 %len) { 289; CHECK-LABEL: @memmove_and_memset_equal_size_values( 290; CHECK-NEXT: call void @llvm.memset.p0i8.i64(i8* align 1 [[DST:%.*]], i8 0, i64 [[LEN:%.*]], i1 false) 291; CHECK-NEXT: ret void 292; 293 call void @llvm.memmove.p0i8.p0i8.i64(i8* %dst, i8* %src, i64 %len, i1 false) 294 call void @llvm.memset.p0i8.i64(i8* align 1 %dst, i8 0, i64 %len, i1 false) 295 ret void 296} 297 298define void @memmove_and_memset_different_size_values_1(i8* noalias %src, i8* noalias %dst, i64 %len.1, i64 %len.2) { 299; CHECK-LABEL: @memmove_and_memset_different_size_values_1( 300; CHECK-NEXT: call void @llvm.memmove.p0i8.p0i8.i64(i8* [[DST:%.*]], i8* [[SRC:%.*]], i64 [[LEN_1:%.*]], i1 false) 301; CHECK-NEXT: call void @llvm.memset.p0i8.i64(i8* align 1 [[DST]], i8 0, i64 [[LEN_2:%.*]], i1 false) 302; CHECK-NEXT: ret void 303; 304 call void @llvm.memmove.p0i8.p0i8.i64(i8* %dst, i8* %src, i64 %len.1, i1 false) 305 call void @llvm.memset.p0i8.i64(i8* align 1 %dst, i8 0, i64 %len.2, i1 false) 306 ret void 307} 308 309define void @memmove_and_memset_different_size_values_2(i8* noalias %src, i8* noalias %dst, i64 %len.1) { 310; CHECK-LABEL: @memmove_and_memset_different_size_values_2( 311; CHECK-NEXT: call void @llvm.memmove.p0i8.p0i8.i64(i8* [[DST:%.*]], i8* [[SRC:%.*]], i64 [[LEN_1:%.*]], i1 false) 312; CHECK-NEXT: call void @llvm.memset.p0i8.i64(i8* align 1 [[DST]], i8 0, i64 100, i1 false) 313; CHECK-NEXT: ret void 314; 315 call void @llvm.memmove.p0i8.p0i8.i64(i8* %dst, i8* %src, i64 %len.1, i1 false) 316 call void @llvm.memset.p0i8.i64(i8* align 1 %dst, i8 0, i64 100, i1 false) 317 ret void 318} 319 320define void @memmove_and_memset_different_size_values_3(i8* noalias %src, i8* noalias %dst, i64 %len.1) { 321; CHECK-LABEL: @memmove_and_memset_different_size_values_3( 322; CHECK-NEXT: call void @llvm.memmove.p0i8.p0i8.i64(i8* [[DST:%.*]], i8* [[SRC:%.*]], i64 100, i1 false) 323; CHECK-NEXT: call void @llvm.memset.p0i8.i64(i8* align 1 [[DST]], i8 0, i64 [[LEN_1:%.*]], i1 false) 324; CHECK-NEXT: ret void 325; 326 call void @llvm.memmove.p0i8.p0i8.i64(i8* %dst, i8* %src, i64 100, i1 false) 327 call void @llvm.memset.p0i8.i64(i8* align 1 %dst, i8 0, i64 %len.1, i1 false) 328 ret void 329} 330 331define void @memmove_and_memcpy_equal_size_values(i8* noalias %src, i8* noalias %dst, i64 %len) { 332; CHECK-LABEL: @memmove_and_memcpy_equal_size_values( 333; CHECK-NEXT: call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[DST:%.*]], i8* [[SRC:%.*]], i64 [[LEN:%.*]], i1 false) 334; CHECK-NEXT: ret void 335; 336 call void @llvm.memmove.p0i8.p0i8.i64(i8* %dst, i8* %src, i64 %len, i1 false) 337 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %dst, i8* %src, i64 %len, i1 false) 338 ret void 339} 340 341define void @memcpy_and_memmove_equal_size_values(i8* noalias %src, i8* noalias %dst, i64 %len) { 342; CHECK-LABEL: @memcpy_and_memmove_equal_size_values( 343; CHECK-NEXT: call void @llvm.memmove.p0i8.p0i8.i64(i8* [[DST:%.*]], i8* [[SRC:%.*]], i64 [[LEN:%.*]], i1 false) 344; CHECK-NEXT: ret void 345; 346 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %dst, i8* %src, i64 %len, i1 false) 347 call void @llvm.memmove.p0i8.p0i8.i64(i8* %dst, i8* %src, i64 %len, i1 false) 348 ret void 349} 350 351declare void @llvm.memset.p0i8.i64(i8* nocapture writeonly, i8, i64, i1 immarg) 352declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture, i8* nocapture, i64, i1) 353declare void @llvm.memmove.p0i8.p0i8.i64(i8* nocapture, i8* nocapture, i64, i1) 354