brintos

brintos / llvm-project-archived public Read only

0
0
Text · 9.1 KiB · 58e35e0 Raw
282 lines · plain
1; RUN: llc -mtriple=amdgcn < %s | FileCheck -check-prefixes=GCN,SICIVI,FUNC %s2; RUN: llc -mtriple=amdgcn -mcpu=tonga -mattr=-flat-for-global,-enable-ds128 < %s | FileCheck -check-prefixes=GCN,SICIVI,FUNC %s3; RUN: llc -mtriple=amdgcn -mcpu=gfx900 -mattr=-flat-for-global,-enable-ds128 < %s | FileCheck -check-prefixes=GCN,FUNC %s4; RUN: llc -mtriple=amdgcn -mcpu=gfx908 -mattr=-flat-for-global,-enable-ds128 < %s | FileCheck -check-prefixes=GCN,FUNC %s5; RUN: llc -mtriple=r600 -mcpu=redwood < %s | FileCheck --check-prefixes=EG,FUNC %s6 7; Testing for ds_read/write_1288; RUN: llc -mtriple=amdgcn -mcpu=tahiti -mattr=+enable-ds128 < %s | FileCheck -check-prefixes=SI,FUNC %s9; RUN: llc -mtriple=amdgcn -mcpu=tonga -mattr=+enable-ds128 < %s | FileCheck -check-prefixes=CIVI,FUNC %s10; RUN: llc -mtriple=amdgcn -mcpu=gfx900 -mattr=+enable-ds128 < %s | FileCheck -check-prefixes=CIVI,FUNC %s11 12; FUNC-LABEL: {{^}}local_load_i32:13; GCN-NOT: s_wqm_b6414; SICIVI: s_mov_b32 m0, -115; GFX9-NOT: m016; GCN: ds_read_b3217 18; EG: LDS_READ_RET19define amdgpu_kernel void @local_load_i32(ptr addrspace(3) %out, ptr addrspace(3) %in) #0 {20entry:21  %ld = load i32, ptr addrspace(3) %in22  store i32 %ld, ptr addrspace(3) %out23  ret void24}25 26; FUNC-LABEL: {{^}}local_load_v2i32:27; SICIVI: s_mov_b32 m0, -128; GFX9-NOT: m029 30; GCN: ds_read_b6431define amdgpu_kernel void @local_load_v2i32(ptr addrspace(3) %out, ptr addrspace(3) %in) #0 {32entry:33  %ld = load <2 x i32>, ptr addrspace(3) %in34  store <2 x i32> %ld, ptr addrspace(3) %out35  ret void36}37 38; FUNC-LABEL: {{^}}local_load_v3i32:39; SICIVI: s_mov_b32 m0, -140; GFX9-NOT: m041 42; SI-DAG: ds_read_b6443; SI-DAG: ds_read_b3244; CIVI-DAG: ds_read_b9645define amdgpu_kernel void @local_load_v3i32(ptr addrspace(3) %out, ptr addrspace(3) %in) #0 {46entry:47  %ld = load <3 x i32>, ptr addrspace(3) %in48  store <3 x i32> %ld, ptr addrspace(3) %out49  ret void50}51 52; FUNC-LABEL: {{^}}local_load_v4i32:53; SICIVI: s_mov_b32 m0, -154; GFX9-NOT: m055 56; GCN: ds_read2_b64 v{{\[[0-9]+:[0-9]+\]}}, v{{[0-9]+}} offset1:1{{$}}57 58define amdgpu_kernel void @local_load_v4i32(ptr addrspace(3) %out, ptr addrspace(3) %in) #0 {59entry:60  %ld = load <4 x i32>, ptr addrspace(3) %in61  store <4 x i32> %ld, ptr addrspace(3) %out62  ret void63}64 65; FUNC-LABEL: {{^}}local_load_v8i32:66; SICIVI: s_mov_b32 m0, -167; GFX9-NOT: m068 69; GCN-DAG: ds_read2_b64 v{{\[[0-9]+:[0-9]+\]}}, v{{[0-9]+}} offset0:2 offset1:3{{$}}70; GCN-DAG: ds_read2_b64 v{{\[[0-9]+:[0-9]+\]}}, v{{[0-9]+}} offset1:1{{$}}71define amdgpu_kernel void @local_load_v8i32(ptr addrspace(3) %out, ptr addrspace(3) %in) #0 {72entry:73  %ld = load <8 x i32>, ptr addrspace(3) %in74  store <8 x i32> %ld, ptr addrspace(3) %out75  ret void76}77 78; FUNC-LABEL: {{^}}local_load_v16i32:79; SICIVI: s_mov_b32 m0, -180; GFX9-NOT: m081 82; GCN-DAG: ds_read2_b64 v{{\[[0-9]+:[0-9]+\]}}, v{{[0-9]+}} offset0:6 offset1:7{{$}}83; GCN-DAG: ds_read2_b64 v{{\[[0-9]+:[0-9]+\]}}, v{{[0-9]+}} offset0:4 offset1:5{{$}}84; GCN-DAG: ds_read2_b64 v{{\[[0-9]+:[0-9]+\]}}, v{{[0-9]+}} offset0:2 offset1:3{{$}}85; GCN-DAG: ds_read2_b64 v{{\[[0-9]+:[0-9]+\]}}, v{{[0-9]+}} offset1:1{{$}}86; GCN-DAG: ds_write2_b64 v{{[0-9]+}}, v{{\[[0-9]+:[0-9]+\]}}, v{{\[[0-9]+:[0-9]+\]}} offset0:6 offset1:787; GCN-DAG: ds_write2_b64 v{{[0-9]+}}, v{{\[[0-9]+:[0-9]+\]}}, v{{\[[0-9]+:[0-9]+\]}} offset0:4 offset1:588; GCN-DAG: ds_write2_b64 v{{[0-9]+}}, v{{\[[0-9]+:[0-9]+\]}}, v{{\[[0-9]+:[0-9]+\]}} offset0:2 offset1:389; GCN-DAG: ds_write2_b64 v{{[0-9]+}}, v{{\[[0-9]+:[0-9]+\]}}, v{{\[[0-9]+:[0-9]+\]}} offset1:190define amdgpu_kernel void @local_load_v16i32(ptr addrspace(3) %out, ptr addrspace(3) %in) #0 {91entry:92  %ld = load <16 x i32>, ptr addrspace(3) %in93  store <16 x i32> %ld, ptr addrspace(3) %out94  ret void95}96 97; FUNC-LABEL: {{^}}local_zextload_i32_to_i64:98; SICIVI: s_mov_b32 m0, -199; GFX9-NOT: m0100 101define amdgpu_kernel void @local_zextload_i32_to_i64(ptr addrspace(3) %out, ptr addrspace(3) %in) #0 {102  %ld = load i32, ptr addrspace(3) %in103  %ext = zext i32 %ld to i64104  store i64 %ext, ptr addrspace(3) %out105  ret void106}107 108; FUNC-LABEL: {{^}}local_sextload_i32_to_i64:109; SICIVI: s_mov_b32 m0, -1110; GFX9-NOT: m0111 112define amdgpu_kernel void @local_sextload_i32_to_i64(ptr addrspace(3) %out, ptr addrspace(3) %in) #0 {113  %ld = load i32, ptr addrspace(3) %in114  %ext = sext i32 %ld to i64115  store i64 %ext, ptr addrspace(3) %out116  ret void117}118 119; FUNC-LABEL: {{^}}local_zextload_v1i32_to_v1i64:120; SICIVI: s_mov_b32 m0, -1121; GFX9-NOT: m0122 123define amdgpu_kernel void @local_zextload_v1i32_to_v1i64(ptr addrspace(3) %out, ptr addrspace(3) %in) #0 {124  %ld = load <1 x i32>, ptr addrspace(3) %in125  %ext = zext <1 x i32> %ld to <1 x i64>126  store <1 x i64> %ext, ptr addrspace(3) %out127  ret void128}129 130; FUNC-LABEL: {{^}}local_sextload_v1i32_to_v1i64:131; SICIVI: s_mov_b32 m0, -1132; GFX9-NOT: m0133 134define amdgpu_kernel void @local_sextload_v1i32_to_v1i64(ptr addrspace(3) %out, ptr addrspace(3) %in) #0 {135  %ld = load <1 x i32>, ptr addrspace(3) %in136  %ext = sext <1 x i32> %ld to <1 x i64>137  store <1 x i64> %ext, ptr addrspace(3) %out138  ret void139}140 141; FUNC-LABEL: {{^}}local_zextload_v2i32_to_v2i64:142; SICIVI: s_mov_b32 m0, -1143; GFX9-NOT: m0144 145define amdgpu_kernel void @local_zextload_v2i32_to_v2i64(ptr addrspace(3) %out, ptr addrspace(3) %in) #0 {146  %ld = load <2 x i32>, ptr addrspace(3) %in147  %ext = zext <2 x i32> %ld to <2 x i64>148  store <2 x i64> %ext, ptr addrspace(3) %out149  ret void150}151 152; FUNC-LABEL: {{^}}local_sextload_v2i32_to_v2i64:153; SICIVI: s_mov_b32 m0, -1154; GFX9-NOT: m0155 156define amdgpu_kernel void @local_sextload_v2i32_to_v2i64(ptr addrspace(3) %out, ptr addrspace(3) %in) #0 {157  %ld = load <2 x i32>, ptr addrspace(3) %in158  %ext = sext <2 x i32> %ld to <2 x i64>159  store <2 x i64> %ext, ptr addrspace(3) %out160  ret void161}162 163; FUNC-LABEL: {{^}}local_zextload_v4i32_to_v4i64:164; SICIVI: s_mov_b32 m0, -1165; GFX9-NOT: m0166 167define amdgpu_kernel void @local_zextload_v4i32_to_v4i64(ptr addrspace(3) %out, ptr addrspace(3) %in) #0 {168  %ld = load <4 x i32>, ptr addrspace(3) %in169  %ext = zext <4 x i32> %ld to <4 x i64>170  store <4 x i64> %ext, ptr addrspace(3) %out171  ret void172}173 174; FUNC-LABEL: {{^}}local_sextload_v4i32_to_v4i64:175; SICIVI: s_mov_b32 m0, -1176; GFX9-NOT: m0177 178define amdgpu_kernel void @local_sextload_v4i32_to_v4i64(ptr addrspace(3) %out, ptr addrspace(3) %in) #0 {179  %ld = load <4 x i32>, ptr addrspace(3) %in180  %ext = sext <4 x i32> %ld to <4 x i64>181  store <4 x i64> %ext, ptr addrspace(3) %out182  ret void183}184 185; Tests if ds_read/write_b128 gets generated for the 16 byte aligned load.186; FUNC-LABEL: {{^}}local_v4i32_to_128:187 188; SI-NOT: ds_read_b128189; SI-NOT: ds_write_b128190 191; CIVI: ds_read_b128192; CIVI: ds_write_b128193 194; EG: LDS_READ_RET195; EG: LDS_READ_RET196; EG: LDS_READ_RET197; EG: LDS_READ_RET198define amdgpu_kernel void @local_v4i32_to_128(ptr addrspace(3) %out, ptr addrspace(3) %in) {199  %ld = load <4 x i32>, ptr addrspace(3) %in, align 16200  store <4 x i32> %ld, ptr addrspace(3) %out, align 16201  ret void202}203 204; FUNC-LABEL: {{^}}local_zextload_v8i32_to_v8i64:205; SICIVI: s_mov_b32 m0, -1206; GFX9-NOT: m0207 208define amdgpu_kernel void @local_zextload_v8i32_to_v8i64(ptr addrspace(3) %out, ptr addrspace(3) %in) #0 {209  %ld = load <8 x i32>, ptr addrspace(3) %in210  %ext = zext <8 x i32> %ld to <8 x i64>211  store <8 x i64> %ext, ptr addrspace(3) %out212  ret void213}214 215; FUNC-LABEL: {{^}}local_sextload_v8i32_to_v8i64:216; SICIVI: s_mov_b32 m0, -1217; GFX9-NOT: m0218 219define amdgpu_kernel void @local_sextload_v8i32_to_v8i64(ptr addrspace(3) %out, ptr addrspace(3) %in) #0 {220  %ld = load <8 x i32>, ptr addrspace(3) %in221  %ext = sext <8 x i32> %ld to <8 x i64>222  store <8 x i64> %ext, ptr addrspace(3) %out223  ret void224}225 226; FUNC-LABEL: {{^}}local_sextload_v16i32_to_v16i64:227; SICIVI: s_mov_b32 m0, -1228; GFX9-NOT: m0229 230define amdgpu_kernel void @local_sextload_v16i32_to_v16i64(ptr addrspace(3) %out, ptr addrspace(3) %in) #0 {231  %ld = load <16 x i32>, ptr addrspace(3) %in232  %ext = sext <16 x i32> %ld to <16 x i64>233  store <16 x i64> %ext, ptr addrspace(3) %out234  ret void235}236 237; FUNC-LABEL: {{^}}local_zextload_v16i32_to_v16i64238; SICIVI: s_mov_b32 m0, -1239; GFX9-NOT: m0240 241define amdgpu_kernel void @local_zextload_v16i32_to_v16i64(ptr addrspace(3) %out, ptr addrspace(3) %in) #0 {242  %ld = load <16 x i32>, ptr addrspace(3) %in243  %ext = zext <16 x i32> %ld to <16 x i64>244  store <16 x i64> %ext, ptr addrspace(3) %out245  ret void246}247 248; FUNC-LABEL: {{^}}local_sextload_v32i32_to_v32i64:249; SICIVI: s_mov_b32 m0, -1250; GFX9-NOT: m0251 252define amdgpu_kernel void @local_sextload_v32i32_to_v32i64(ptr addrspace(3) %out, ptr addrspace(3) %in) #0 {253  %ld = load <32 x i32>, ptr addrspace(3) %in254  %ext = sext <32 x i32> %ld to <32 x i64>255  store <32 x i64> %ext, ptr addrspace(3) %out256  ret void257}258 259; FUNC-LABEL: {{^}}local_zextload_v32i32_to_v32i64:260; SICIVI: s_mov_b32 m0, -1261; GFX9-NOT: m0262 263define amdgpu_kernel void @local_zextload_v32i32_to_v32i64(ptr addrspace(3) %out, ptr addrspace(3) %in) #0 {264  %ld = load <32 x i32>, ptr addrspace(3) %in265  %ext = zext <32 x i32> %ld to <32 x i64>266  store <32 x i64> %ext, ptr addrspace(3) %out267  ret void268}269 270; FUNC-LABEL: {{^}}local_load_v32i32:271; SICIVI: s_mov_b32 m0, -1272; GFX9-NOT: m0273; GFX9-NOT: accvgpr274 275define amdgpu_kernel void @local_load_v32i32(ptr addrspace(3) %out, ptr addrspace(3) %in) #0 {276  %ld = load <32 x i32>, ptr addrspace(3) %in277  store <32 x i32> %ld, ptr addrspace(3) %out278  ret void279}280 281attributes #0 = { nounwind }282