brintos

brintos / llvm-project-archived public Read only

0
0
Text · 20.0 KiB · 947d8a7 Raw
425 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt -passes=dse -S %s | FileCheck %s3 4define void @memset_equal_size_values(ptr %ptr, i64 %len) {5; CHECK-LABEL: @memset_equal_size_values(6; CHECK-NEXT:    call void @llvm.memset.p0.i64(ptr align 1 [[PTR:%.*]], i8 0, i64 [[LEN:%.*]], i1 false)7; CHECK-NEXT:    ret void8;9  call void @llvm.memset.p0.i64(ptr align 1 %ptr, i8 0, i64 %len, i1 false)10  call void @llvm.memset.p0.i64(ptr align 1 %ptr, i8 0, i64 %len, i1 false)11  ret void12}13 14define void @memset_different_size_values_1(ptr %ptr, i64 %len.1, i64 %len.2) {15; CHECK-LABEL: @memset_different_size_values_1(16; CHECK-NEXT:    call void @llvm.memset.p0.i64(ptr align 1 [[PTR:%.*]], i8 0, i64 [[LEN_1:%.*]], i1 false)17; CHECK-NEXT:    call void @llvm.memset.p0.i64(ptr align 1 [[PTR]], i8 0, i64 [[LEN_2:%.*]], i1 false)18; CHECK-NEXT:    ret void19;20  call void @llvm.memset.p0.i64(ptr align 1 %ptr, i8 0, i64 %len.1, i1 false)21  call void @llvm.memset.p0.i64(ptr align 1 %ptr, i8 0, i64 %len.2, i1 false)22  ret void23}24 25define void @memset_different_size_values_2(ptr %ptr, i64 %len) {26; CHECK-LABEL: @memset_different_size_values_2(27; CHECK-NEXT:    call void @llvm.memset.p0.i64(ptr align 1 [[PTR:%.*]], i8 0, i64 [[LEN:%.*]], i1 false)28; CHECK-NEXT:    call void @llvm.memset.p0.i64(ptr align 1 [[PTR]], i8 0, i64 100, i1 false)29; CHECK-NEXT:    ret void30;31  call void @llvm.memset.p0.i64(ptr align 1 %ptr, i8 0, i64 %len, i1 false)32  call void @llvm.memset.p0.i64(ptr align 1 %ptr, i8 0, i64 100, i1 false)33  ret void34}35 36define void @memset_different_size_values_3(ptr %ptr, i64 %len) {37; CHECK-LABEL: @memset_different_size_values_3(38; CHECK-NEXT:    call void @llvm.memset.p0.i64(ptr align 1 [[PTR:%.*]], i8 0, i64 100, i1 false)39; CHECK-NEXT:    call void @llvm.memset.p0.i64(ptr align 1 [[PTR]], i8 0, i64 [[LEN:%.*]], i1 false)40; CHECK-NEXT:    ret void41;42  call void @llvm.memset.p0.i64(ptr align 1 %ptr, i8 0, i64 100, i1 false)43  call void @llvm.memset.p0.i64(ptr align 1 %ptr, i8 0, i64 %len, i1 false)44  ret void45}46 47define void @memset_and_store_1(ptr %ptr, i64 %len) {48; CHECK-LABEL: @memset_and_store_1(49; CHECK-NEXT:    store i64 123, ptr [[PTR:%.*]], align 450; CHECK-NEXT:    call void @llvm.memset.p0.i64(ptr align 1 [[PTR]], i8 0, i64 [[LEN:%.*]], i1 false)51; CHECK-NEXT:    ret void52;53  store i64 123, ptr %ptr54  call void @llvm.memset.p0.i64(ptr align 1 %ptr, i8 0, i64 %len, i1 false)55  ret void56}57 58define void @memset_and_store_2(ptr %ptr, i64 %len) {59; CHECK-LABEL: @memset_and_store_2(60; CHECK-NEXT:    call void @llvm.memset.p0.i64(ptr align 1 [[PTR:%.*]], i8 0, i64 [[LEN:%.*]], i1 false)61; CHECK-NEXT:    store i64 123, ptr [[PTR]], align 462; CHECK-NEXT:    ret void63;64  call void @llvm.memset.p0.i64(ptr align 1 %ptr, i8 0, i64 %len, i1 false)65  store i64 123, ptr %ptr66  ret void67}68 69define void @memset_pattern_equal_size_values(ptr %ptr, i64 %len) {70; CHECK-LABEL: @memset_pattern_equal_size_values(71; CHECK-NEXT:    call void @llvm.experimental.memset.pattern.p0.i8.i64(ptr align 1 [[PTR:%.*]], i8 0, i64 [[LEN:%.*]], i1 false)72; CHECK-NEXT:    ret void73;74  call void @llvm.experimental.memset.pattern.p0.i8.i64(ptr align 1 %ptr, i8 0, i64 %len, i1 false)75  call void @llvm.experimental.memset.pattern.p0.i8.i64(ptr align 1 %ptr, i8 0, i64 %len, i1 false)76  ret void77}78 79define void @memset_pattern_different_size_values_1(ptr %ptr, i64 %len.1, i64 %len.2) {80; CHECK-LABEL: @memset_pattern_different_size_values_1(81; CHECK-NEXT:    call void @llvm.experimental.memset.pattern.p0.i8.i64(ptr align 1 [[PTR:%.*]], i8 0, i64 [[LEN_1:%.*]], i1 false)82; CHECK-NEXT:    call void @llvm.experimental.memset.pattern.p0.i8.i64(ptr align 1 [[PTR]], i8 0, i64 [[LEN_2:%.*]], i1 false)83; CHECK-NEXT:    ret void84;85  call void @llvm.experimental.memset.pattern.p0.i8.i64(ptr align 1 %ptr, i8 0, i64 %len.1, i1 false)86  call void @llvm.experimental.memset.pattern.p0.i8.i64(ptr align 1 %ptr, i8 0, i64 %len.2, i1 false)87  ret void88}89 90define void @memset_pattern_different_size_values_2(ptr %ptr, i64 %len) {91; CHECK-LABEL: @memset_pattern_different_size_values_2(92; CHECK-NEXT:    call void @llvm.experimental.memset.pattern.p0.i8.i64(ptr align 1 [[PTR:%.*]], i8 0, i64 [[LEN:%.*]], i1 false)93; CHECK-NEXT:    call void @llvm.experimental.memset.pattern.p0.i8.i64(ptr align 1 [[PTR]], i8 0, i64 100, i1 false)94; CHECK-NEXT:    ret void95;96  call void @llvm.experimental.memset.pattern.p0.i8.i64(ptr align 1 %ptr, i8 0, i64 %len, i1 false)97  call void @llvm.experimental.memset.pattern.p0.i8.i64(ptr align 1 %ptr, i8 0, i64 100, i1 false)98  ret void99}100 101define void @memset_pattern_different_size_values_3(ptr %ptr, i64 %len) {102; CHECK-LABEL: @memset_pattern_different_size_values_3(103; CHECK-NEXT:    call void @llvm.experimental.memset.pattern.p0.i8.i64(ptr align 1 [[PTR:%.*]], i8 0, i64 100, i1 false)104; CHECK-NEXT:    call void @llvm.experimental.memset.pattern.p0.i8.i64(ptr align 1 [[PTR]], i8 0, i64 [[LEN:%.*]], i1 false)105; CHECK-NEXT:    ret void106;107  call void @llvm.experimental.memset.pattern.p0.i8.i64(ptr align 1 %ptr, i8 0, i64 100, i1 false)108  call void @llvm.experimental.memset.pattern.p0.i8.i64(ptr align 1 %ptr, i8 0, i64 %len, i1 false)109  ret void110}111 112define void @memset_pattern_and_store_1(ptr %ptr, i64 %len) {113; CHECK-LABEL: @memset_pattern_and_store_1(114; CHECK-NEXT:    store i64 123, ptr [[PTR:%.*]], align 4115; CHECK-NEXT:    call void @llvm.experimental.memset.pattern.p0.i8.i64(ptr align 1 [[PTR]], i8 0, i64 [[LEN:%.*]], i1 false)116; CHECK-NEXT:    ret void117;118  store i64 123, ptr %ptr119  call void @llvm.experimental.memset.pattern.p0.i8.i64(ptr align 1 %ptr, i8 0, i64 %len, i1 false)120  ret void121}122 123define void @memset_pattern_and_store_2(ptr %ptr, i64 %len) {124; CHECK-LABEL: @memset_pattern_and_store_2(125; CHECK-NEXT:    call void @llvm.experimental.memset.pattern.p0.i8.i64(ptr align 1 [[PTR:%.*]], i8 0, i64 [[LEN:%.*]], i1 false)126; CHECK-NEXT:    store i64 123, ptr [[PTR]], align 4127; CHECK-NEXT:    ret void128;129  call void @llvm.experimental.memset.pattern.p0.i8.i64(ptr align 1 %ptr, i8 0, i64 %len, i1 false)130  store i64 123, ptr %ptr131  ret void132}133 134define void @memset_pattern_and_store_3(ptr %ptr) {135; CHECK-LABEL: @memset_pattern_and_store_3(136; CHECK-NEXT:    call void @llvm.experimental.memset.pattern.p0.i8.i64(ptr align 1 [[PTR:%.*]], i8 0, i64 13, i1 false)137; CHECK-NEXT:    ret void138;139  store i64 0, ptr %ptr140  call void @llvm.experimental.memset.pattern.p0.i8.i64(ptr align 1 %ptr, i8 0, i64 13, i1 false)141  ret void142}143 144define void @memcpy_equal_size_values(ptr noalias %src, ptr noalias %dst, i64 %len) {145; CHECK-LABEL: @memcpy_equal_size_values(146; CHECK-NEXT:    call void @llvm.memcpy.p0.p0.i64(ptr [[DST:%.*]], ptr [[SRC:%.*]], i64 [[LEN:%.*]], i1 false)147; CHECK-NEXT:    ret void148;149  call void @llvm.memcpy.p0.p0.i64(ptr %dst, ptr %src, i64 %len, i1 false)150  call void @llvm.memcpy.p0.p0.i64(ptr %dst, ptr %src, i64 %len, i1 false)151  ret void152}153 154define void @memcpy_different_size_values_1(ptr noalias %src, ptr noalias %dst, i64 %len.1, i64 %len.2) {155; CHECK-LABEL: @memcpy_different_size_values_1(156; CHECK-NEXT:    call void @llvm.memcpy.p0.p0.i64(ptr [[DST:%.*]], ptr [[SRC:%.*]], i64 [[LEN_1:%.*]], i1 false)157; CHECK-NEXT:    call void @llvm.memcpy.p0.p0.i64(ptr [[DST]], ptr [[SRC]], i64 [[LEN_2:%.*]], i1 false)158; CHECK-NEXT:    ret void159;160  call void @llvm.memcpy.p0.p0.i64(ptr %dst, ptr %src, i64 %len.1, i1 false)161  call void @llvm.memcpy.p0.p0.i64(ptr %dst, ptr %src, i64 %len.2, i1 false)162  ret void163}164 165define void @memcpy_different_size_values_2(ptr noalias %src, ptr noalias %dst, i64 %len) {166; CHECK-LABEL: @memcpy_different_size_values_2(167; CHECK-NEXT:    call void @llvm.memcpy.p0.p0.i64(ptr [[DST:%.*]], ptr [[SRC:%.*]], i64 [[LEN:%.*]], i1 false)168; CHECK-NEXT:    call void @llvm.memcpy.p0.p0.i64(ptr [[DST]], ptr [[SRC]], i64 100, i1 false)169; CHECK-NEXT:    ret void170;171  call void @llvm.memcpy.p0.p0.i64(ptr %dst, ptr %src, i64 %len, i1 false)172  call void @llvm.memcpy.p0.p0.i64(ptr %dst, ptr %src, i64 100, i1 false)173  ret void174}175 176define void @memcpy_different_size_values_3(ptr noalias %src, ptr noalias %dst, i64 %len) {177; CHECK-LABEL: @memcpy_different_size_values_3(178; CHECK-NEXT:    call void @llvm.memcpy.p0.p0.i64(ptr [[DST:%.*]], ptr [[SRC:%.*]], i64 100, i1 false)179; CHECK-NEXT:    call void @llvm.memcpy.p0.p0.i64(ptr [[DST]], ptr [[SRC]], i64 [[LEN:%.*]], i1 false)180; CHECK-NEXT:    ret void181;182  call void @llvm.memcpy.p0.p0.i64(ptr %dst, ptr %src, i64 100, i1 false)183  call void @llvm.memcpy.p0.p0.i64(ptr %dst, ptr %src, i64 %len, i1 false)184  ret void185}186 187define void @memset_and_memcpy_equal_size_values(ptr noalias %src, ptr noalias %dst, i64 %len) {188; CHECK-LABEL: @memset_and_memcpy_equal_size_values(189; CHECK-NEXT:    call void @llvm.memcpy.p0.p0.i64(ptr [[DST:%.*]], ptr [[SRC:%.*]], i64 [[LEN:%.*]], i1 false)190; CHECK-NEXT:    ret void191;192  call void @llvm.memset.p0.i64(ptr align 1 %dst, i8 0, i64 %len, i1 false)193  call void @llvm.memcpy.p0.p0.i64(ptr %dst, ptr %src, i64 %len, i1 false)194  ret void195}196 197define void @memset_and_memcpy_different_size_values_1(ptr noalias %src, ptr noalias %dst, i64 %len.1, i64 %len.2) {198; CHECK-LABEL: @memset_and_memcpy_different_size_values_1(199; CHECK-NEXT:    call void @llvm.memset.p0.i64(ptr align 1 [[DST:%.*]], i8 0, i64 [[LEN_1:%.*]], i1 false)200; CHECK-NEXT:    call void @llvm.memcpy.p0.p0.i64(ptr [[DST]], ptr [[SRC:%.*]], i64 [[LEN_2:%.*]], i1 false)201; CHECK-NEXT:    ret void202;203  call void @llvm.memset.p0.i64(ptr align 1 %dst, i8 0, i64 %len.1, i1 false)204  call void @llvm.memcpy.p0.p0.i64(ptr %dst, ptr %src, i64 %len.2, i1 false)205  ret void206}207 208define void @memset_and_memcpy_different_size_values_2(ptr noalias %src, ptr noalias %dst, i64 %len.1) {209; CHECK-LABEL: @memset_and_memcpy_different_size_values_2(210; CHECK-NEXT:    call void @llvm.memset.p0.i64(ptr align 1 [[DST:%.*]], i8 0, i64 [[LEN_1:%.*]], i1 false)211; CHECK-NEXT:    call void @llvm.memcpy.p0.p0.i64(ptr [[DST]], ptr [[SRC:%.*]], i64 100, i1 false)212; CHECK-NEXT:    ret void213;214  call void @llvm.memset.p0.i64(ptr align 1 %dst, i8 0, i64 %len.1, i1 false)215  call void @llvm.memcpy.p0.p0.i64(ptr %dst, ptr %src, i64 100, i1 false)216  ret void217}218 219define void @memset_and_memcpy_different_size_values_3(ptr noalias %src, ptr noalias %dst, i64 %len.1) {220; CHECK-LABEL: @memset_and_memcpy_different_size_values_3(221; CHECK-NEXT:    call void @llvm.memset.p0.i64(ptr align 1 [[DST:%.*]], i8 0, i64 100, i1 false)222; CHECK-NEXT:    call void @llvm.memcpy.p0.p0.i64(ptr [[DST]], ptr [[SRC:%.*]], i64 [[LEN_1:%.*]], i1 false)223; CHECK-NEXT:    ret void224;225  call void @llvm.memset.p0.i64(ptr align 1 %dst, i8 0, i64 100, i1 false)226  call void @llvm.memcpy.p0.p0.i64(ptr %dst, ptr %src, i64 %len.1, i1 false)227  ret void228}229 230define void @memcpy_and_memset_equal_size_values(ptr noalias %src, ptr noalias %dst, i64 %len) {231; CHECK-LABEL: @memcpy_and_memset_equal_size_values(232; CHECK-NEXT:    call void @llvm.memset.p0.i64(ptr align 1 [[DST:%.*]], i8 0, i64 [[LEN:%.*]], i1 false)233; CHECK-NEXT:    ret void234;235  call void @llvm.memcpy.p0.p0.i64(ptr %dst, ptr %src, i64 %len, i1 false)236  call void @llvm.memset.p0.i64(ptr align 1 %dst, i8 0, i64 %len, i1 false)237  ret void238}239 240define void @memcpy_and_memset_different_size_values_1(ptr noalias %src, ptr noalias %dst, i64 %len.1, i64 %len.2) {241; CHECK-LABEL: @memcpy_and_memset_different_size_values_1(242; CHECK-NEXT:    call void @llvm.memcpy.p0.p0.i64(ptr [[DST:%.*]], ptr [[SRC:%.*]], i64 [[LEN_1:%.*]], i1 false)243; CHECK-NEXT:    call void @llvm.memset.p0.i64(ptr align 1 [[DST]], i8 0, i64 [[LEN_2:%.*]], i1 false)244; CHECK-NEXT:    ret void245;246  call void @llvm.memcpy.p0.p0.i64(ptr %dst, ptr %src, i64 %len.1, i1 false)247  call void @llvm.memset.p0.i64(ptr align 1 %dst, i8 0, i64 %len.2, i1 false)248  ret void249}250 251define void @memcpy_and_memset_different_size_values_2(ptr noalias %src, ptr noalias %dst, i64 %len.1) {252; CHECK-LABEL: @memcpy_and_memset_different_size_values_2(253; CHECK-NEXT:    call void @llvm.memcpy.p0.p0.i64(ptr [[DST:%.*]], ptr [[SRC:%.*]], i64 [[LEN_1:%.*]], i1 false)254; CHECK-NEXT:    call void @llvm.memset.p0.i64(ptr align 1 [[DST]], i8 0, i64 100, i1 false)255; CHECK-NEXT:    ret void256;257  call void @llvm.memcpy.p0.p0.i64(ptr %dst, ptr %src, i64 %len.1, i1 false)258  call void @llvm.memset.p0.i64(ptr align 1 %dst, i8 0, i64 100, i1 false)259  ret void260}261 262define void @memcpy_and_memset_different_size_values_3(ptr noalias %src, ptr noalias %dst, i64 %len.1) {263; CHECK-LABEL: @memcpy_and_memset_different_size_values_3(264; CHECK-NEXT:    call void @llvm.memcpy.p0.p0.i64(ptr [[DST:%.*]], ptr [[SRC:%.*]], i64 100, i1 false)265; CHECK-NEXT:    call void @llvm.memset.p0.i64(ptr align 1 [[DST]], i8 0, i64 [[LEN_1:%.*]], i1 false)266; CHECK-NEXT:    ret void267;268  call void @llvm.memcpy.p0.p0.i64(ptr %dst, ptr %src, i64 100, i1 false)269  call void @llvm.memset.p0.i64(ptr align 1 %dst, i8 0, i64 %len.1, i1 false)270  ret void271}272 273define void @memmove_equal_size_values(ptr noalias %src, ptr noalias %dst, i64 %len) {274; CHECK-LABEL: @memmove_equal_size_values(275; CHECK-NEXT:    call void @llvm.memmove.p0.p0.i64(ptr [[DST:%.*]], ptr [[SRC:%.*]], i64 [[LEN:%.*]], i1 false)276; CHECK-NEXT:    ret void277;278  call void @llvm.memmove.p0.p0.i64(ptr %dst, ptr %src, i64 %len, i1 false)279  call void @llvm.memmove.p0.p0.i64(ptr %dst, ptr %src, i64 %len, i1 false)280  ret void281}282 283define void @memmove_different_size_values_1(ptr noalias %src, ptr noalias %dst, i64 %len.1, i64 %len.2) {284; CHECK-LABEL: @memmove_different_size_values_1(285; CHECK-NEXT:    call void @llvm.memmove.p0.p0.i64(ptr [[DST:%.*]], ptr [[SRC:%.*]], i64 [[LEN_1:%.*]], i1 false)286; CHECK-NEXT:    call void @llvm.memmove.p0.p0.i64(ptr [[DST]], ptr [[SRC]], i64 [[LEN_2:%.*]], i1 false)287; CHECK-NEXT:    ret void288;289  call void @llvm.memmove.p0.p0.i64(ptr %dst, ptr %src, i64 %len.1, i1 false)290  call void @llvm.memmove.p0.p0.i64(ptr %dst, ptr %src, i64 %len.2, i1 false)291  ret void292}293 294define void @memmove_different_size_values_2(ptr noalias %src, ptr noalias %dst, i64 %len) {295; CHECK-LABEL: @memmove_different_size_values_2(296; CHECK-NEXT:    call void @llvm.memmove.p0.p0.i64(ptr [[DST:%.*]], ptr [[SRC:%.*]], i64 [[LEN:%.*]], i1 false)297; CHECK-NEXT:    call void @llvm.memmove.p0.p0.i64(ptr [[DST]], ptr [[SRC]], i64 100, i1 false)298; CHECK-NEXT:    ret void299;300  call void @llvm.memmove.p0.p0.i64(ptr %dst, ptr %src, i64 %len, i1 false)301  call void @llvm.memmove.p0.p0.i64(ptr %dst, ptr %src, i64 100, i1 false)302  ret void303}304 305define void @memmove_different_size_values_3(ptr noalias %src, ptr noalias %dst, i64 %len) {306; CHECK-LABEL: @memmove_different_size_values_3(307; CHECK-NEXT:    call void @llvm.memmove.p0.p0.i64(ptr [[DST:%.*]], ptr [[SRC:%.*]], i64 100, i1 false)308; CHECK-NEXT:    call void @llvm.memmove.p0.p0.i64(ptr [[DST]], ptr [[SRC]], i64 [[LEN:%.*]], i1 false)309; CHECK-NEXT:    ret void310;311  call void @llvm.memmove.p0.p0.i64(ptr %dst, ptr %src, i64 100, i1 false)312  call void @llvm.memmove.p0.p0.i64(ptr %dst, ptr %src, i64 %len, i1 false)313  ret void314}315 316define void @memset_and_memmove_equal_size_values(ptr noalias %src, ptr noalias %dst, i64 %len) {317; CHECK-LABEL: @memset_and_memmove_equal_size_values(318; CHECK-NEXT:    call void @llvm.memmove.p0.p0.i64(ptr [[DST:%.*]], ptr [[SRC:%.*]], i64 [[LEN:%.*]], i1 false)319; CHECK-NEXT:    ret void320;321  call void @llvm.memset.p0.i64(ptr align 1 %dst, i8 0, i64 %len, i1 false)322  call void @llvm.memmove.p0.p0.i64(ptr %dst, ptr %src, i64 %len, i1 false)323  ret void324}325 326define void @memset_and_memmove_different_size_values_1(ptr noalias %src, ptr noalias %dst, i64 %len.1, i64 %len.2) {327; CHECK-LABEL: @memset_and_memmove_different_size_values_1(328; CHECK-NEXT:    call void @llvm.memset.p0.i64(ptr align 1 [[DST:%.*]], i8 0, i64 [[LEN_1:%.*]], i1 false)329; CHECK-NEXT:    call void @llvm.memmove.p0.p0.i64(ptr [[DST]], ptr [[SRC:%.*]], i64 [[LEN_2:%.*]], i1 false)330; CHECK-NEXT:    ret void331;332  call void @llvm.memset.p0.i64(ptr align 1 %dst, i8 0, i64 %len.1, i1 false)333  call void @llvm.memmove.p0.p0.i64(ptr %dst, ptr %src, i64 %len.2, i1 false)334  ret void335}336 337define void @memset_and_memmove_different_size_values_2(ptr noalias %src, ptr noalias %dst, i64 %len.1) {338; CHECK-LABEL: @memset_and_memmove_different_size_values_2(339; CHECK-NEXT:    call void @llvm.memset.p0.i64(ptr align 1 [[DST:%.*]], i8 0, i64 [[LEN_1:%.*]], i1 false)340; CHECK-NEXT:    call void @llvm.memmove.p0.p0.i64(ptr [[DST]], ptr [[SRC:%.*]], i64 100, i1 false)341; CHECK-NEXT:    ret void342;343  call void @llvm.memset.p0.i64(ptr align 1 %dst, i8 0, i64 %len.1, i1 false)344  call void @llvm.memmove.p0.p0.i64(ptr %dst, ptr %src, i64 100, i1 false)345  ret void346}347 348define void @memset_and_memmove_different_size_values_3(ptr noalias %src, ptr noalias %dst, i64 %len.1) {349; CHECK-LABEL: @memset_and_memmove_different_size_values_3(350; CHECK-NEXT:    call void @llvm.memset.p0.i64(ptr align 1 [[DST:%.*]], i8 0, i64 100, i1 false)351; CHECK-NEXT:    call void @llvm.memmove.p0.p0.i64(ptr [[DST]], ptr [[SRC:%.*]], i64 [[LEN_1:%.*]], i1 false)352; CHECK-NEXT:    ret void353;354  call void @llvm.memset.p0.i64(ptr align 1 %dst, i8 0, i64 100, i1 false)355  call void @llvm.memmove.p0.p0.i64(ptr %dst, ptr %src, i64 %len.1, i1 false)356  ret void357}358 359define void @memmove_and_memset_equal_size_values(ptr noalias %src, ptr noalias %dst, i64 %len) {360; CHECK-LABEL: @memmove_and_memset_equal_size_values(361; CHECK-NEXT:    call void @llvm.memset.p0.i64(ptr align 1 [[DST:%.*]], i8 0, i64 [[LEN:%.*]], i1 false)362; CHECK-NEXT:    ret void363;364  call void @llvm.memmove.p0.p0.i64(ptr %dst, ptr %src, i64 %len, i1 false)365  call void @llvm.memset.p0.i64(ptr align 1 %dst, i8 0, i64 %len, i1 false)366  ret void367}368 369define void @memmove_and_memset_different_size_values_1(ptr noalias %src, ptr noalias %dst, i64 %len.1, i64 %len.2) {370; CHECK-LABEL: @memmove_and_memset_different_size_values_1(371; CHECK-NEXT:    call void @llvm.memmove.p0.p0.i64(ptr [[DST:%.*]], ptr [[SRC:%.*]], i64 [[LEN_1:%.*]], i1 false)372; CHECK-NEXT:    call void @llvm.memset.p0.i64(ptr align 1 [[DST]], i8 0, i64 [[LEN_2:%.*]], i1 false)373; CHECK-NEXT:    ret void374;375  call void @llvm.memmove.p0.p0.i64(ptr %dst, ptr %src, i64 %len.1, i1 false)376  call void @llvm.memset.p0.i64(ptr align 1 %dst, i8 0, i64 %len.2, i1 false)377  ret void378}379 380define void @memmove_and_memset_different_size_values_2(ptr noalias %src, ptr noalias %dst, i64 %len.1) {381; CHECK-LABEL: @memmove_and_memset_different_size_values_2(382; CHECK-NEXT:    call void @llvm.memmove.p0.p0.i64(ptr [[DST:%.*]], ptr [[SRC:%.*]], i64 [[LEN_1:%.*]], i1 false)383; CHECK-NEXT:    call void @llvm.memset.p0.i64(ptr align 1 [[DST]], i8 0, i64 100, i1 false)384; CHECK-NEXT:    ret void385;386  call void @llvm.memmove.p0.p0.i64(ptr %dst, ptr %src, i64 %len.1, i1 false)387  call void @llvm.memset.p0.i64(ptr align 1 %dst, i8 0, i64 100, i1 false)388  ret void389}390 391define void @memmove_and_memset_different_size_values_3(ptr noalias %src, ptr noalias %dst, i64 %len.1) {392; CHECK-LABEL: @memmove_and_memset_different_size_values_3(393; CHECK-NEXT:    call void @llvm.memmove.p0.p0.i64(ptr [[DST:%.*]], ptr [[SRC:%.*]], i64 100, i1 false)394; CHECK-NEXT:    call void @llvm.memset.p0.i64(ptr align 1 [[DST]], i8 0, i64 [[LEN_1:%.*]], i1 false)395; CHECK-NEXT:    ret void396;397  call void @llvm.memmove.p0.p0.i64(ptr %dst, ptr %src, i64 100, i1 false)398  call void @llvm.memset.p0.i64(ptr align 1 %dst, i8 0, i64 %len.1, i1 false)399  ret void400}401 402define void @memmove_and_memcpy_equal_size_values(ptr noalias %src, ptr noalias %dst, i64 %len) {403; CHECK-LABEL: @memmove_and_memcpy_equal_size_values(404; CHECK-NEXT:    call void @llvm.memcpy.p0.p0.i64(ptr [[DST:%.*]], ptr [[SRC:%.*]], i64 [[LEN:%.*]], i1 false)405; CHECK-NEXT:    ret void406;407  call void @llvm.memmove.p0.p0.i64(ptr %dst, ptr %src, i64 %len, i1 false)408  call void @llvm.memcpy.p0.p0.i64(ptr %dst, ptr %src, i64 %len, i1 false)409  ret void410}411 412define void @memcpy_and_memmove_equal_size_values(ptr noalias %src, ptr noalias %dst, i64 %len) {413; CHECK-LABEL: @memcpy_and_memmove_equal_size_values(414; CHECK-NEXT:    call void @llvm.memmove.p0.p0.i64(ptr [[DST:%.*]], ptr [[SRC:%.*]], i64 [[LEN:%.*]], i1 false)415; CHECK-NEXT:    ret void416;417  call void @llvm.memcpy.p0.p0.i64(ptr %dst, ptr %src, i64 %len, i1 false)418  call void @llvm.memmove.p0.p0.i64(ptr %dst, ptr %src, i64 %len, i1 false)419  ret void420}421 422declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg)423declare void @llvm.memcpy.p0.p0.i64(ptr nocapture, ptr nocapture, i64, i1)424declare void @llvm.memmove.p0.p0.i64(ptr nocapture, ptr nocapture, i64, i1)425