brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.5 KiB · d712ea1 Raw
51 lines · plain
1; RUN: opt -passes=loop-idiom -S < %s -mtriple=r600 -mcpu=redwood | FileCheck --check-prefix=R600 --check-prefix=FUNC %s2; RUN: opt -passes=loop-idiom -S < %s -mtriple=amdgcn -mcpu=tahiti | FileCheck --check-prefix=SI --check-prefix=FUNC %s3; RUN: opt -passes=loop-idiom -S < %s -mtriple=amdgcn -mcpu=tonga | FileCheck --check-prefix=SI --check-prefix=FUNC %s4 5; Make sure loop-idiom doesn't create memcpy or memset.  There are no library6; implementations of these for R600.7 8; FUNC: @no_memcpy9; R600-NOT: {{^}}llvm.memcpy10; SI-NOT: {{^}}llvm.memcpy11define amdgpu_kernel void @no_memcpy(ptr addrspace(3) %in, i32 %size) {12entry:13  %dest = alloca i8, i32 32, addrspace(5)14  br label %for.body15 16for.body:17  %0 = phi i32 [0, %entry], [%4, %for.body]18  %1 = getelementptr i8, ptr addrspace(3) %in, i32 %019  %2 = getelementptr i8, ptr addrspace(5) %dest, i32 %020  %3 = load i8, ptr addrspace(3) %121  store i8 %3, ptr addrspace(5) %222  %4 = add i32 %0, 123  %5 = icmp eq i32 %4, %size24  br i1 %5, label %for.end, label %for.body25 26for.end:27  ret void28}29 30; FUNC: @no_memset31; R600-NOT: {{^}}llvm.memset32; R600-NOT: {{^}}memset_pattern16:33; SI-NOT: {{^}}llvm.memset34; SI-NOT: {{^}}memset_pattern16:35define amdgpu_kernel void @no_memset(i32 %size) {36entry:37  %dest = alloca i8, i32 32, addrspace(5)38  br label %for.body39 40for.body:41  %0 = phi i32 [0, %entry], [%2, %for.body]42  %1 = getelementptr i8, ptr addrspace(5) %dest, i32 %043  store i8 0, ptr addrspace(5) %144  %2 = add i32 %0, 145  %3 = icmp eq i32 %2, %size46  br i1 %3, label %for.end, label %for.body47 48for.end:49  ret void50}51