brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.6 KiB · 60c321b Raw
195 lines · plain
1; RUN: llc -mtriple=amdgcn < %s | FileCheck -check-prefixes=GCN,FUNC %s2; RUN: llc -mtriple=amdgcn--amdhsa -mcpu=kaveri -mattr=-enable-ds128 < %s | FileCheck -check-prefixes=GCN,FUNC %s3; RUN: llc -mtriple=amdgcn -mcpu=tonga -mattr=-enable-ds128 < %s | FileCheck -check-prefixes=GCN,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_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_f64:12; SICIV: 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_f64(ptr addrspace(3) %out, ptr addrspace(3) %in) #0 {21  %ld = load double, ptr addrspace(3) %in22  store double %ld, ptr addrspace(3) %out23  ret void24}25 26; FUNC-LABEL: {{^}}local_load_v2f64:27; SICIV: 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_v2f64(ptr addrspace(3) %out, ptr addrspace(3) %in) #0 {37entry:38  %ld = load <2 x double>, ptr addrspace(3) %in39  store <2 x double> %ld, ptr addrspace(3) %out40  ret void41}42 43; FUNC-LABEL: {{^}}local_load_v3f64:44; SICIV: s_mov_b32 m045; GFX9-NOT: m046 47; GCN-DAG: ds_read2_b6448; GCN-DAG: ds_read_b6449 50; EG: LDS_READ_RET51; EG: LDS_READ_RET52; EG: LDS_READ_RET53; EG: LDS_READ_RET54; EG: LDS_READ_RET55; EG: LDS_READ_RET56define amdgpu_kernel void @local_load_v3f64(ptr addrspace(3) %out, ptr addrspace(3) %in) #0 {57entry:58  %ld = load <3 x double>, ptr addrspace(3) %in59  store <3 x double> %ld, ptr addrspace(3) %out60  ret void61}62 63; FUNC-LABEL: {{^}}local_load_v4f64:64; SICIV: s_mov_b32 m065; GFX9-NOT: m066 67; GCN: ds_read2_b6468; GCN: ds_read2_b6469 70; EG: LDS_READ_RET71; EG: LDS_READ_RET72; EG: LDS_READ_RET73; EG: LDS_READ_RET74 75; EG: LDS_READ_RET76; EG: LDS_READ_RET77; EG: LDS_READ_RET78; EG: LDS_READ_RET79define amdgpu_kernel void @local_load_v4f64(ptr addrspace(3) %out, ptr addrspace(3) %in) #0 {80entry:81  %ld = load <4 x double>, ptr addrspace(3) %in82  store <4 x double> %ld, ptr addrspace(3) %out83  ret void84}85 86; FUNC-LABEL: {{^}}local_load_v8f64:87; SICIV: s_mov_b32 m088; GFX9-NOT: m089 90; GCN: ds_read2_b6491; GCN: ds_read2_b6492; GCN: ds_read2_b6493; GCN: ds_read2_b6494 95; EG: LDS_READ_RET96; EG: LDS_READ_RET97; EG: LDS_READ_RET98; EG: LDS_READ_RET99; EG: LDS_READ_RET100; EG: LDS_READ_RET101; EG: LDS_READ_RET102; EG: LDS_READ_RET103; EG: LDS_READ_RET104; EG: LDS_READ_RET105; EG: LDS_READ_RET106; EG: LDS_READ_RET107; EG: LDS_READ_RET108; EG: LDS_READ_RET109; EG: LDS_READ_RET110; EG: LDS_READ_RET111define amdgpu_kernel void @local_load_v8f64(ptr addrspace(3) %out, ptr addrspace(3) %in) #0 {112entry:113  %ld = load <8 x double>, ptr addrspace(3) %in114  store <8 x double> %ld, ptr addrspace(3) %out115  ret void116}117 118; FUNC-LABEL: {{^}}local_load_v16f64:119; SICIV: s_mov_b32 m0120; GFX9-NOT: m0121 122; GCN: ds_read2_b64123; GCN: ds_read2_b64124; GCN: ds_read2_b64125; GCN: ds_read2_b64126; GCN: ds_read2_b64127; GCN: ds_read2_b64128; GCN: ds_read2_b64129; GCN: ds_read2_b64130 131; EG: LDS_READ_RET132; EG: LDS_READ_RET133; EG: LDS_READ_RET134; EG: LDS_READ_RET135 136; EG: LDS_READ_RET137; EG: LDS_READ_RET138; EG: LDS_READ_RET139; EG: LDS_READ_RET140 141; EG: LDS_READ_RET142; EG: LDS_READ_RET143; EG: LDS_READ_RET144; EG: LDS_READ_RET145 146; EG: LDS_READ_RET147; EG: LDS_READ_RET148; EG: LDS_READ_RET149; EG: LDS_READ_RET150 151; EG: LDS_READ_RET152; EG: LDS_READ_RET153; EG: LDS_READ_RET154; EG: LDS_READ_RET155 156; EG: LDS_READ_RET157; EG: LDS_READ_RET158; EG: LDS_READ_RET159; EG: LDS_READ_RET160 161; EG: LDS_READ_RET162; EG: LDS_READ_RET163; EG: LDS_READ_RET164; EG: LDS_READ_RET165 166; EG: LDS_READ_RET167; EG: LDS_READ_RET168; EG: LDS_READ_RET169; EG: LDS_READ_RET170define amdgpu_kernel void @local_load_v16f64(ptr addrspace(3) %out, ptr addrspace(3) %in) #0 {171entry:172  %ld = load <16 x double>, ptr addrspace(3) %in173  store <16 x double> %ld, ptr addrspace(3) %out174  ret void175}176 177; Tests if ds_read_b128 gets generated for the 16 byte aligned load.178; FUNC-LABEL: {{^}}local_load_v2f64_to_128:179 180; CIVI: ds_read_b128181; CIVI: ds_write_b128182 183; EG: LDS_READ_RET184; EG: LDS_READ_RET185; EG: LDS_READ_RET186; EG: LDS_READ_RET187define amdgpu_kernel void @local_load_v2f64_to_128(ptr addrspace(3) %out, ptr addrspace(3) %in) {188entry:189  %ld = load <2 x double>, ptr addrspace(3) %in, align 16190  store <2 x double> %ld, ptr addrspace(3) %out, align 16191  ret void192}193 194attributes #0 = { nounwind }195