135 lines · plain
1; RUN: llc -mtriple=amdgcn < %s | FileCheck -allow-deprecated-dag-overlap -check-prefix=GCN -check-prefix=SI %s2; RUN: llc -mtriple=amdgcn -mcpu=bonaire < %s | FileCheck -allow-deprecated-dag-overlap -check-prefix=GCN -check-prefix=CI %s3; RUN: llc -mtriple=amdgcn -mcpu=tonga -mattr=-flat-for-global < %s | FileCheck -allow-deprecated-dag-overlap -check-prefix=GCN -check-prefix=VI %s4 5; GCN-LABEL: {{^}}global_store_v3i64:6; GCN-DAG: buffer_store_dwordx2 v{{\[[0-9]+:[0-9]+\]}}, off, s{{\[[0-9]+:[0-9]+\]}}, 0 offset:167; GCN-DAG: buffer_store_dwordx4 v{{\[[0-9]+:[0-9]+\]}}, off, s{{\[[0-9]+:[0-9]+\]}}, 0{{$}}8define amdgpu_kernel void @global_store_v3i64(ptr addrspace(1) %out, <3 x i64> %x) {9 store <3 x i64> %x, ptr addrspace(1) %out, align 3210 ret void11}12 13; GCN-LABEL: {{^}}global_store_v3i64_unaligned:14; GCN: buffer_store_byte15; GCN: buffer_store_byte16; GCN: buffer_store_byte17; GCN: buffer_store_byte18 19; GCN: buffer_store_byte20; GCN: buffer_store_byte21; GCN: buffer_store_byte22; GCN: buffer_store_byte23 24; GCN: buffer_store_byte25; GCN: buffer_store_byte26; GCN: buffer_store_byte27; GCN: buffer_store_byte28 29; GCN: buffer_store_byte30; GCN: buffer_store_byte31; GCN: buffer_store_byte32; GCN: buffer_store_byte33 34; GCN: buffer_store_byte35; GCN: buffer_store_byte36; GCN: buffer_store_byte37; GCN: buffer_store_byte38 39; GCN: buffer_store_byte40; GCN: buffer_store_byte41; GCN: buffer_store_byte42; GCN: buffer_store_byte43define amdgpu_kernel void @global_store_v3i64_unaligned(ptr addrspace(1) %out, <3 x i64> %x) {44 store <3 x i64> %x, ptr addrspace(1) %out, align 145 ret void46}47 48; GCN-LABEL: {{^}}local_store_v3i64:49; SI: ds_write2_b6450; SI: ds_write_b6451 52; CI: ds_write_b6453; CI: ds_write_b12854 55; VI: ds_write_b6456; VI: ds_write_b12857define amdgpu_kernel void @local_store_v3i64(ptr addrspace(3) %out, <3 x i64> %x) {58 store <3 x i64> %x, ptr addrspace(3) %out, align 3259 ret void60}61 62; GCN-LABEL: {{^}}local_store_v3i64_unaligned:63; GCN: ds_write_b864; GCN: ds_write_b865; GCN: ds_write_b866; GCN: ds_write_b867 68; GCN: ds_write_b869; GCN: ds_write_b870; GCN: ds_write_b871; GCN: ds_write_b872 73; GCN: ds_write_b874; GCN: ds_write_b875; GCN: ds_write_b876; GCN: ds_write_b877 78; GCN: ds_write_b879; GCN: ds_write_b880; GCN: ds_write_b881; GCN: ds_write_b882 83; GCN: ds_write_b884; GCN: ds_write_b885; GCN: ds_write_b886; GCN: ds_write_b887 88; GCN: ds_write_b889; GCN: ds_write_b890; GCN: ds_write_b891; GCN: ds_write_b892define amdgpu_kernel void @local_store_v3i64_unaligned(ptr addrspace(3) %out, <3 x i64> %x) {93 store <3 x i64> %x, ptr addrspace(3) %out, align 194 ret void95}96 97; GCN-LABEL: {{^}}global_truncstore_v3i64_to_v3i32:98; SI-DAG: buffer_store_dwordx299; SI-DAG: buffer_store_dword v100; VI-DAG: buffer_store_dwordx3101define amdgpu_kernel void @global_truncstore_v3i64_to_v3i32(ptr addrspace(1) %out, <3 x i64> %x) {102 %trunc = trunc <3 x i64> %x to <3 x i32>103 store <3 x i32> %trunc, ptr addrspace(1) %out104 ret void105}106 107; GCN-LABEL: {{^}}global_truncstore_v3i64_to_v3i16:108; GCN-DAG: buffer_store_short109; GCN-DAG: buffer_store_dword v110define amdgpu_kernel void @global_truncstore_v3i64_to_v3i16(ptr addrspace(1) %out, <3 x i64> %x) {111 %trunc = trunc <3 x i64> %x to <3 x i16>112 store <3 x i16> %trunc, ptr addrspace(1) %out113 ret void114}115 116 117; GCN-LABEL: {{^}}global_truncstore_v3i64_to_v3i8:118; GCN-DAG: buffer_store_short119; GCN-DAG: buffer_store_byte v120define amdgpu_kernel void @global_truncstore_v3i64_to_v3i8(ptr addrspace(1) %out, <3 x i64> %x) {121 %trunc = trunc <3 x i64> %x to <3 x i8>122 store <3 x i8> %trunc, ptr addrspace(1) %out123 ret void124}125 126; GCN-LABEL: {{^}}global_truncstore_v3i64_to_v3i1:127; GCN-DAG: buffer_store_byte v128; GCN-DAG: buffer_store_byte v129; GCN-DAG: buffer_store_byte v130define amdgpu_kernel void @global_truncstore_v3i64_to_v3i1(ptr addrspace(1) %out, <3 x i64> %x) {131 %trunc = trunc <3 x i64> %x to <3 x i1>132 store <3 x i1> %trunc, ptr addrspace(1) %out133 ret void134}135