136 lines · plain
1; RUN: opt -aa-pipeline=basic-aa -passes=aa-eval -print-all-alias-modref-info -disable-output 2>&1 %s | FileCheck %s2 3declare void @llvm.memset.element.unordered.atomic.p0.i32(ptr, i8, i64, i32)4 5define void @test_memset_element_unordered_atomic_const_size(ptr noalias %a) {6; CHECK-LABEL: Function: test_memset_element_unordered_atomic_const_size7; CHECK: Just Mod: Ptr: i8* %a <-> call void @llvm.memset.element.unordered.atomic.p0.i64(ptr align 1 %a, i8 0, i64 4, i32 1)8; CHECK-NEXT: Just Mod: Ptr: i8* %a.gep.1 <-> call void @llvm.memset.element.unordered.atomic.p0.i64(ptr align 1 %a, i8 0, i64 4, i32 1)9; CHECK-NEXT: NoModRef: Ptr: i8* %a.gep.5 <-> call void @llvm.memset.element.unordered.atomic.p0.i64(ptr align 1 %a, i8 0, i64 4, i32 1)10;11entry:12 load i8, ptr %a13 call void @llvm.memset.element.unordered.atomic.p0.i32(ptr align 1 %a, i8 0, i64 4, i32 1)14 %a.gep.1 = getelementptr i8, ptr %a, i32 115 store i8 0, ptr %a.gep.116 %a.gep.5 = getelementptr i8, ptr %a, i32 517 store i8 1, ptr %a.gep.518 ret void19}20 21define void @test_memset_element_unordered_atomic_variable_size(ptr noalias %a, i64 %n) {22; CHECK-LABEL: Function: test_memset_element_unordered_atomic_variable_size23; CHECK: Just Mod: Ptr: i8* %a <-> call void @llvm.memset.element.unordered.atomic.p0.i64(ptr align 1 %a, i8 0, i64 %n, i32 1)24; CHECK-NEXT: Just Mod: Ptr: i8* %a.gep.1 <-> call void @llvm.memset.element.unordered.atomic.p0.i64(ptr align 1 %a, i8 0, i64 %n, i32 1)25; CHECK-NEXT: Just Mod: Ptr: i8* %a.gep.5 <-> call void @llvm.memset.element.unordered.atomic.p0.i64(ptr align 1 %a, i8 0, i64 %n, i32 1)26;27entry:28 load i8, ptr %a29 call void @llvm.memset.element.unordered.atomic.p0.i32(ptr align 1 %a, i8 0, i64 %n, i32 1)30 %a.gep.1 = getelementptr i8, ptr %a, i32 131 store i8 0, ptr %a.gep.132 %a.gep.5 = getelementptr i8, ptr %a, i32 533 store i8 1, ptr %a.gep.534 ret void35}36 37declare void @llvm.memcpy.element.unordered.atomic.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i32)38 39define void @test_memcpy_element_unordered_atomic_const_size(ptr noalias %a, ptr noalias %b) {40; CHECK-LABEL: Function: test_memcpy_element_unordered_atomic_const_size41; CHECK: Just Ref: Ptr: i8* %a <-> call void @llvm.memcpy.element.unordered.atomic.p0.p0.i64(ptr align 1 %b, ptr align 1 %a, i64 4, i32 1)42; CHECK-NEXT: Just Mod: Ptr: i8* %b <-> call void @llvm.memcpy.element.unordered.atomic.p0.p0.i64(ptr align 1 %b, ptr align 1 %a, i64 4, i32 1)43; CHECK-NEXT: Just Ref: Ptr: i8* %a.gep.1 <-> call void @llvm.memcpy.element.unordered.atomic.p0.p0.i64(ptr align 1 %b, ptr align 1 %a, i64 4, i32 1)44; CHECK-NEXT: NoModRef: Ptr: i8* %a.gep.5 <-> call void @llvm.memcpy.element.unordered.atomic.p0.p0.i64(ptr align 1 %b, ptr align 1 %a, i64 4, i32 1)45; CHECK-NEXT: Just Mod: Ptr: i8* %b.gep.1 <-> call void @llvm.memcpy.element.unordered.atomic.p0.p0.i64(ptr align 1 %b, ptr align 1 %a, i64 4, i32 1)46; CHECK-NEXT: NoModRef: Ptr: i8* %b.gep.5 <-> call void @llvm.memcpy.element.unordered.atomic.p0.p0.i64(ptr align 1 %b, ptr align 1 %a, i64 4, i32 1)47;48entry:49 load i8, ptr %a50 load i8, ptr %b51 %a.gep.1 = getelementptr i8, ptr %a, i32 152 store i8 0, ptr %a.gep.153 %a.gep.5 = getelementptr i8, ptr %a, i32 554 store i8 1, ptr %a.gep.555 call void @llvm.memcpy.element.unordered.atomic.p0.p0.i64(ptr align 1 %b, ptr align 1 %a, i64 4, i32 1)56 %b.gep.1 = getelementptr i8, ptr %b, i32 157 store i8 0, ptr %b.gep.158 %b.gep.5 = getelementptr i8, ptr %b, i32 559 store i8 1, ptr %b.gep.560 ret void61}62 63define void @test_memcpy_element_unordered_atomic_variable_size(ptr noalias %a, ptr noalias %b, i64 %n) {64; CHECK-LABEL: Function: test_memcpy_element_unordered_atomic_variable_size65; CHECK: Just Ref: Ptr: i8* %a <-> call void @llvm.memcpy.element.unordered.atomic.p0.p0.i64(ptr align 1 %b, ptr align 1 %a, i64 %n, i32 1)66; CHECK-NEXT: Just Mod: Ptr: i8* %b <-> call void @llvm.memcpy.element.unordered.atomic.p0.p0.i64(ptr align 1 %b, ptr align 1 %a, i64 %n, i32 1)67; CHECK-NEXT: Just Ref: Ptr: i8* %a.gep.1 <-> call void @llvm.memcpy.element.unordered.atomic.p0.p0.i64(ptr align 1 %b, ptr align 1 %a, i64 %n, i32 1)68; CHECK-NEXT: Just Ref: Ptr: i8* %a.gep.5 <-> call void @llvm.memcpy.element.unordered.atomic.p0.p0.i64(ptr align 1 %b, ptr align 1 %a, i64 %n, i32 1)69; CHECK-NEXT: Just Mod: Ptr: i8* %b.gep.1 <-> call void @llvm.memcpy.element.unordered.atomic.p0.p0.i64(ptr align 1 %b, ptr align 1 %a, i64 %n, i32 1)70; CHECK-NEXT: Just Mod: Ptr: i8* %b.gep.5 <-> call void @llvm.memcpy.element.unordered.atomic.p0.p0.i64(ptr align 1 %b, ptr align 1 %a, i64 %n, i32 1)71;72entry:73 load i8, ptr %a74 load i8, ptr %b75 %a.gep.1 = getelementptr i8, ptr %a, i32 176 store i8 0, ptr %a.gep.177 %a.gep.5 = getelementptr i8, ptr %a, i32 578 store i8 1, ptr %a.gep.579 call void @llvm.memcpy.element.unordered.atomic.p0.p0.i64(ptr align 1 %b, ptr align 1 %a, i64 %n, i32 1)80 %b.gep.1 = getelementptr i8, ptr %b, i32 181 store i8 0, ptr %b.gep.182 %b.gep.5 = getelementptr i8, ptr %b, i32 583 store i8 1, ptr %b.gep.584 ret void85}86 87declare void @llvm.memmove.element.unordered.atomic.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i32)88 89define void @test_memmove_element_unordered_atomic_const_size(ptr noalias %a, ptr noalias %b) {90; CHECK-LABEL: Function: test_memmove_element_unordered_atomic_const_size91; CHECK: Just Ref: Ptr: i8* %a <-> call void @llvm.memmove.element.unordered.atomic.p0.p0.i64(ptr align 1 %b, ptr align 1 %a, i64 4, i32 1)92; CHECK-NEXT: Just Mod: Ptr: i8* %b <-> call void @llvm.memmove.element.unordered.atomic.p0.p0.i64(ptr align 1 %b, ptr align 1 %a, i64 4, i32 1)93; CHECK-NEXT: Just Ref: Ptr: i8* %a.gep.1 <-> call void @llvm.memmove.element.unordered.atomic.p0.p0.i64(ptr align 1 %b, ptr align 1 %a, i64 4, i32 1)94; CHECK-NEXT: NoModRef: Ptr: i8* %a.gep.5 <-> call void @llvm.memmove.element.unordered.atomic.p0.p0.i64(ptr align 1 %b, ptr align 1 %a, i64 4, i32 1)95; CHECK-NEXT: Just Mod: Ptr: i8* %b.gep.1 <-> call void @llvm.memmove.element.unordered.atomic.p0.p0.i64(ptr align 1 %b, ptr align 1 %a, i64 4, i32 1)96; CHECK-NEXT: NoModRef: Ptr: i8* %b.gep.5 <-> call void @llvm.memmove.element.unordered.atomic.p0.p0.i64(ptr align 1 %b, ptr align 1 %a, i64 4, i32 1)97;98entry:99 load i8, ptr %a100 load i8, ptr %b101 %a.gep.1 = getelementptr i8, ptr %a, i32 1102 store i8 0, ptr %a.gep.1103 %a.gep.5 = getelementptr i8, ptr %a, i32 5104 store i8 1, ptr %a.gep.5105 call void @llvm.memmove.element.unordered.atomic.p0.p0.i64(ptr align 1 %b, ptr align 1 %a, i64 4, i32 1)106 %b.gep.1 = getelementptr i8, ptr %b, i32 1107 store i8 0, ptr %b.gep.1108 %b.gep.5 = getelementptr i8, ptr %b, i32 5109 store i8 1, ptr %b.gep.5110 ret void111}112 113define void @test_memmove_element_unordered_atomic_variable_size(ptr noalias %a, ptr noalias %b, i64 %n) {114; CHECK-LABEL: Function: test_memmove_element_unordered_atomic_variable_size115; CHECK: Just Ref: Ptr: i8* %a <-> call void @llvm.memmove.element.unordered.atomic.p0.p0.i64(ptr align 1 %b, ptr align 1 %a, i64 %n, i32 1)116; CHECK-NEXT: Just Mod: Ptr: i8* %b <-> call void @llvm.memmove.element.unordered.atomic.p0.p0.i64(ptr align 1 %b, ptr align 1 %a, i64 %n, i32 1)117; CHECK-NEXT: Just Ref: Ptr: i8* %a.gep.1 <-> call void @llvm.memmove.element.unordered.atomic.p0.p0.i64(ptr align 1 %b, ptr align 1 %a, i64 %n, i32 1)118; CHECK-NEXT: Just Ref: Ptr: i8* %a.gep.5 <-> call void @llvm.memmove.element.unordered.atomic.p0.p0.i64(ptr align 1 %b, ptr align 1 %a, i64 %n, i32 1)119; CHECK-NEXT: Just Mod: Ptr: i8* %b.gep.1 <-> call void @llvm.memmove.element.unordered.atomic.p0.p0.i64(ptr align 1 %b, ptr align 1 %a, i64 %n, i32 1)120; CHECK-NEXT: Just Mod: Ptr: i8* %b.gep.5 <-> call void @llvm.memmove.element.unordered.atomic.p0.p0.i64(ptr align 1 %b, ptr align 1 %a, i64 %n, i32 1)121;122entry:123 load i8, ptr %a124 load i8, ptr %b125 %a.gep.1 = getelementptr i8, ptr %a, i32 1126 store i8 0, ptr %a.gep.1127 %a.gep.5 = getelementptr i8, ptr %a, i32 5128 store i8 1, ptr %a.gep.5129 call void @llvm.memmove.element.unordered.atomic.p0.p0.i64(ptr align 1 %b, ptr align 1 %a, i64 %n, i32 1)130 %b.gep.1 = getelementptr i8, ptr %b, i32 1131 store i8 0, ptr %b.gep.1132 %b.gep.5 = getelementptr i8, ptr %b, i32 5133 store i8 1, ptr %b.gep.5134 ret void135}136