brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.8 KiB · 2d67186 Raw
74 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 52; RUN: opt -passes='early-cse<memssa>' -S < %s | FileCheck %s3 4declare void @use(i1)5declare void @use.ptr(i32, ptr) memory(read)6 7define void @load_first_noalias_addrspace(ptr %p) {8; CHECK-LABEL: define void @load_first_noalias_addrspace(9; CHECK-SAME: ptr [[P:%.*]]) {10; CHECK-NEXT:    [[V1:%.*]] = load ptr, ptr [[P]], align 8, !nonnull [[META0:![0-9]+]], !noundef [[META0]], !noalias.addrspace [[META1:![0-9]+]]11; CHECK-NEXT:    call void @use.ptr(i32 0, ptr [[V1]])12; CHECK-NEXT:    call void @use.ptr(i32 1, ptr [[V1]])13; CHECK-NEXT:    ret void14;15  %v1 = load ptr, ptr %p, !nonnull !{}, !noundef !{}, !noalias.addrspace !016  call void @use.ptr(i32 0, ptr %v1)17  %v2 = load ptr, ptr %p18  call void @use.ptr(i32 1, ptr %v2)19  ret void20}21 22define void @load_both_same_noalias_addrspace(ptr %p) {23; CHECK-LABEL: define void @load_both_same_noalias_addrspace(24; CHECK-SAME: ptr [[P:%.*]]) {25; CHECK-NEXT:    [[V1:%.*]] = load ptr, ptr [[P]], align 8, !nonnull [[META0]], !noundef [[META0]], !noalias.addrspace [[META1]]26; CHECK-NEXT:    call void @use.ptr(i32 0, ptr [[V1]])27; CHECK-NEXT:    call void @use.ptr(i32 1, ptr [[V1]])28; CHECK-NEXT:    ret void29;30  %v1 = load ptr, ptr %p, !nonnull !{}, !noundef !{}, !noalias.addrspace !031  call void @use.ptr(i32 0, ptr %v1)32  %v2 = load ptr, ptr %p, !noalias.addrspace !033  call void @use.ptr(i32 1, ptr %v2)34  ret void35}36 37define void @load_both_disjoint_noalias_addrspace(ptr %p) {38; CHECK-LABEL: define void @load_both_disjoint_noalias_addrspace(39; CHECK-SAME: ptr [[P:%.*]]) {40; CHECK-NEXT:    [[V1:%.*]] = load ptr, ptr [[P]], align 8, !nonnull [[META0]], !noundef [[META0]], !noalias.addrspace [[META1]]41; CHECK-NEXT:    call void @use.ptr(i32 0, ptr [[V1]])42; CHECK-NEXT:    call void @use.ptr(i32 1, ptr [[V1]])43; CHECK-NEXT:    ret void44;45  %v1 = load ptr, ptr %p, !nonnull !{}, !noundef !{}, !noalias.addrspace !046  call void @use.ptr(i32 0, ptr %v1)47  %v2 = load ptr, ptr %p, !noalias.addrspace !148  call void @use.ptr(i32 1, ptr %v2)49  ret void50}51 52define void @load_both_overlap_noalias_addrspace(ptr %p) {53; CHECK-LABEL: define void @load_both_overlap_noalias_addrspace(54; CHECK-SAME: ptr [[P:%.*]]) {55; CHECK-NEXT:    [[V1:%.*]] = load ptr, ptr [[P]], align 8, !nonnull [[META0]], !noundef [[META0]], !noalias.addrspace [[META1]]56; CHECK-NEXT:    call void @use.ptr(i32 0, ptr [[V1]])57; CHECK-NEXT:    call void @use.ptr(i32 1, ptr [[V1]])58; CHECK-NEXT:    ret void59;60  %v1 = load ptr, ptr %p, !nonnull !{}, !noundef !{}, !noalias.addrspace !061  call void @use.ptr(i32 0, ptr %v1)62  %v2 = load ptr, ptr %p, !noalias.addrspace !263  call void @use.ptr(i32 1, ptr %v2)64  ret void65}66 67!0 = !{i32 5, i32 6}68!1 = !{i32 7, i32 8}69!2 = !{i32 5, i32 7}70;.71; CHECK: [[META0]] = !{}72; CHECK: [[META1]] = !{i32 5, i32 6}73;.74