191 lines · plain
1; RUN: llc -mtriple=amdgcn < %s | FileCheck -check-prefixes=GCN,SICIVI,FUNC %s2; RUN: llc -mtriple=amdgcn--amdhsa -mcpu=kaveri -mattr=-enable-ds128 < %s | FileCheck -check-prefixes=GCN,SICIVI,FUNC %s3; RUN: llc -mtriple=amdgcn -mcpu=tonga -mattr=-enable-ds128 < %s | FileCheck -check-prefixes=GCN,SICIVI,FUNC %s4; RUN: llc -mtriple=amdgcn -mcpu=gfx900 -mattr=-enable-ds128 < %s | FileCheck -check-prefixes=GCN,GFX9,FUNC %s5; RUN: llc -mtriple=r600 -mcpu=redwood < %s | FileCheck -check-prefixes=EG,FUNC %s6 7; Testing for ds_read/write_b1288; RUN: llc -mtriple=amdgcn -mcpu=tonga -mattr=+enable-ds128 < %s | FileCheck -check-prefixes=CIVI,FUNC %s9; RUN: llc -mtriple=amdgcn -mcpu=gfx900 -mattr=+enable-ds128 < %s | FileCheck -check-prefixes=CIVI,FUNC %s10 11; FUNC-LABEL: {{^}}local_load_i64:12; SICIVI: s_mov_b32 m013; GFX9-NOT: m014 15; GCN: ds_read_b64 [[VAL:v\[[0-9]+:[0-9]+\]]], v{{[0-9]+}}{{$}}16; GCN: ds_write_b64 v{{[0-9]+}}, [[VAL]]17 18; EG: LDS_READ_RET19; EG: LDS_READ_RET20define amdgpu_kernel void @local_load_i64(ptr addrspace(3) %out, ptr addrspace(3) %in) #0 {21 %ld = load i64, ptr addrspace(3) %in22 store i64 %ld, ptr addrspace(3) %out23 ret void24}25 26; FUNC-LABEL: {{^}}local_load_v2i64:27; SICIVI: s_mov_b32 m028; GFX9-NOT: m029 30; GCN: ds_read2_b6431 32; EG: LDS_READ_RET33; EG: LDS_READ_RET34; EG: LDS_READ_RET35; EG: LDS_READ_RET36define amdgpu_kernel void @local_load_v2i64(ptr addrspace(3) %out, ptr addrspace(3) %in) #0 {37entry:38 %ld = load <2 x i64>, ptr addrspace(3) %in39 store <2 x i64> %ld, ptr addrspace(3) %out40 ret void41}42 43; Tests if ds_read/write_b128 gets generated for the 16 byte aligned load.44; FUNC-LABEL: {{^}}local_load_v2i64_to_128:45 46; CIVI: ds_read_b12847; CIVI: ds_write_b12848 49define amdgpu_kernel void @local_load_v2i64_to_128(ptr addrspace(3) %out, ptr addrspace(3) %in) {50entry:51 %ld = load <2 x i64>, ptr addrspace(3) %in, align 1652 store <2 x i64> %ld, ptr addrspace(3) %out, align 1653 ret void54}55 56; FUNC-LABEL: {{^}}local_load_v3i64:57; SICIVI: s_mov_b32 m058; GFX9-NOT: m059 60; GCN-DAG: ds_read2_b6461; GCN-DAG: ds_read_b6462 63; EG: LDS_READ_RET64; EG: LDS_READ_RET65; EG: LDS_READ_RET66; EG: LDS_READ_RET67; EG: LDS_READ_RET68; EG: LDS_READ_RET69define amdgpu_kernel void @local_load_v3i64(ptr addrspace(3) %out, ptr addrspace(3) %in) #0 {70entry:71 %ld = load <3 x i64>, ptr addrspace(3) %in72 store <3 x i64> %ld, ptr addrspace(3) %out73 ret void74}75 76; FUNC-LABEL: {{^}}local_load_v4i64:77; SICIVI: s_mov_b32 m078; GFX9-NOT: m079 80; GCN: ds_read2_b6481; GCN: ds_read2_b6482 83; EG: LDS_READ_RET84; EG: LDS_READ_RET85; EG: LDS_READ_RET86; EG: LDS_READ_RET87 88; EG: LDS_READ_RET89; EG: LDS_READ_RET90; EG: LDS_READ_RET91; EG: LDS_READ_RET92define amdgpu_kernel void @local_load_v4i64(ptr addrspace(3) %out, ptr addrspace(3) %in) #0 {93entry:94 %ld = load <4 x i64>, ptr addrspace(3) %in95 store <4 x i64> %ld, ptr addrspace(3) %out96 ret void97}98 99; FUNC-LABEL: {{^}}local_load_v8i64:100; SICIVI: s_mov_b32 m0101; GFX9-NOT: m0102 103; GCN: ds_read2_b64104; GCN: ds_read2_b64105; GCN: ds_read2_b64106; GCN: ds_read2_b64107 108; EG: LDS_READ_RET109; EG: LDS_READ_RET110; EG: LDS_READ_RET111; EG: LDS_READ_RET112; EG: LDS_READ_RET113; EG: LDS_READ_RET114; EG: LDS_READ_RET115; EG: LDS_READ_RET116; EG: LDS_READ_RET117; EG: LDS_READ_RET118; EG: LDS_READ_RET119; EG: LDS_READ_RET120; EG: LDS_READ_RET121; EG: LDS_READ_RET122; EG: LDS_READ_RET123; EG: LDS_READ_RET124define amdgpu_kernel void @local_load_v8i64(ptr addrspace(3) %out, ptr addrspace(3) %in) #0 {125entry:126 %ld = load <8 x i64>, ptr addrspace(3) %in127 store <8 x i64> %ld, ptr addrspace(3) %out128 ret void129}130 131; FUNC-LABEL: {{^}}local_load_v16i64:132; SICIVI: s_mov_b32 m0133; GFX9-NOT: m0134 135; GCN: ds_read2_b64136; GCN: ds_read2_b64137; GCN: ds_read2_b64138; GCN: ds_read2_b64139; GCN: ds_read2_b64140; GCN: ds_read2_b64141; GCN: ds_read2_b64142; GCN: ds_read2_b64143 144; EG: LDS_READ_RET145; EG: LDS_READ_RET146; EG: LDS_READ_RET147; EG: LDS_READ_RET148 149; EG: LDS_READ_RET150; EG: LDS_READ_RET151; EG: LDS_READ_RET152; EG: LDS_READ_RET153 154; EG: LDS_READ_RET155; EG: LDS_READ_RET156; EG: LDS_READ_RET157; EG: LDS_READ_RET158 159; EG: LDS_READ_RET160; EG: LDS_READ_RET161; EG: LDS_READ_RET162; EG: LDS_READ_RET163 164; EG: LDS_READ_RET165; EG: LDS_READ_RET166; EG: LDS_READ_RET167; EG: LDS_READ_RET168 169; EG: LDS_READ_RET170; EG: LDS_READ_RET171; EG: LDS_READ_RET172; EG: LDS_READ_RET173 174; EG: LDS_READ_RET175; EG: LDS_READ_RET176; EG: LDS_READ_RET177; EG: LDS_READ_RET178 179; EG: LDS_READ_RET180; EG: LDS_READ_RET181; EG: LDS_READ_RET182; EG: LDS_READ_RET183define amdgpu_kernel void @local_load_v16i64(ptr addrspace(3) %out, ptr addrspace(3) %in) #0 {184entry:185 %ld = load <16 x i64>, ptr addrspace(3) %in186 store <16 x i64> %ld, ptr addrspace(3) %out187 ret void188}189 190attributes #0 = { nounwind }191