brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.6 KiB · 0453cc8 Raw
44 lines · plain
1; RUN: llc -mtriple=amdgcn -mcpu=verde < %s | FileCheck --check-prefixes=GCN,FUNC %s2; RUN: llc -mtriple=amdgcn -mcpu=bonaire < %s | FileCheck --check-prefixes=GCN,FUNC %s3; RUN: llc -mtriple=r600 -mcpu=redwood < %s | FileCheck -check-prefix=FUNC %s4 5@local_memory.local_mem = internal unnamed_addr addrspace(3) global [128 x i32] poison, align 46 7@lds = addrspace(3) global [512 x i32] poison, align 48 9; On SI we need to make sure that the base offset is a register and10; not an immediate.11 12; FUNC-LABEL: {{^}}load_i32_local_const_ptr:13; GCN: v_mov_b32_e32 v[[PTR:[0-9]+]], 0{{$}}14; GCN: ds_read_b32 v{{[0-9]+}}, v[[PTR]] offset:415 16; R600: LDS_READ_RET17define amdgpu_kernel void @load_i32_local_const_ptr(ptr addrspace(1) %out, ptr addrspace(3) %in) #0 {18entry:19  %tmp0 = getelementptr [512 x i32], ptr addrspace(3) @lds, i32 0, i32 120  %tmp1 = load i32, ptr addrspace(3) %tmp021  %tmp2 = getelementptr i32, ptr addrspace(1) %out, i32 122  store i32 %tmp1, ptr addrspace(1) %tmp223  ret void24}25 26; Test loading a i32 and v2i32 value from the same base pointer.27; FUNC-LABEL: {{^}}load_i32_v2i32_local:28; R600: LDS_READ_RET29; R600: LDS_READ_RET30; R600: LDS_READ_RET31; GCN-DAG: ds_read_b3232; GCN-DAG: ds_read2_b3233define amdgpu_kernel void @load_i32_v2i32_local(ptr addrspace(1) %out, ptr addrspace(3) %in) #0 {34  %scalar = load i32, ptr addrspace(3) %in35  %vec_ptr = getelementptr <2 x i32>, ptr addrspace(3) %in, i32 236  %vec0 = load <2 x i32>, ptr addrspace(3) %vec_ptr, align 437  %vec1 = insertelement <2 x i32> <i32 0, i32 0>, i32 %scalar, i32 038  %vec = add <2 x i32> %vec0, %vec139  store <2 x i32> %vec, ptr addrspace(1) %out40  ret void41}42 43attributes #0 = { nounwind }44