1; RUN: llc -march=amdgcn -verify-machineinstrs < %s | FileCheck -check-prefix=GCN -check-prefix=GCN-NOHSA -check-prefix=FUNC %s 2; RUN: llc -mtriple=amdgcn--amdhsa -mcpu=kaveri -verify-machineinstrs < %s | FileCheck -check-prefix=GCN -check-prefix=GCN-HSA -check-prefix=FUNC %s 3; RUN: llc -march=amdgcn -mcpu=tonga -verify-machineinstrs < %s | FileCheck -check-prefix=GCN -check-prefix=GCN-NOHSA -check-prefix=FUNC %s 4 5; RUN: llc -march=r600 -mcpu=redwood < %s | FileCheck -check-prefix=EG -check-prefix=FUNC %s 6; RUN: llc -march=r600 -mcpu=cayman < %s | FileCheck -check-prefix=EG -check-prefix=FUNC %s 7 8; FUNC-LABEL: {{^}}global_load_i64: 9; GCN-NOHSA: buffer_load_dwordx2 [[VAL:v\[[0-9]+:[0-9]+\]]] 10; GCN-NOHSA: buffer_store_dwordx2 [[VAL]] 11 12; GCN-HSA: flat_load_dwordx2 [[VAL:v\[[0-9]+:[0-9]+\]]] 13; GCN-HSA: flat_store_dwordx2 {{v\[[0-9]+:[0-9]+\]}}, [[VAL]] 14 15; EG: VTX_READ_64 16define void @global_load_i64(i64 addrspace(1)* %out, i64 addrspace(1)* %in) #0 { 17 %ld = load i64, i64 addrspace(1)* %in 18 store i64 %ld, i64 addrspace(1)* %out 19 ret void 20} 21 22; FUNC-LABEL: {{^}}global_load_v2i64: 23; GCN-NOHSA: buffer_load_dwordx4 24; GCN-HSA: flat_load_dwordx4 25 26; EG: VTX_READ_128 27define void @global_load_v2i64(<2 x i64> addrspace(1)* %out, <2 x i64> addrspace(1)* %in) #0 { 28entry: 29 %ld = load <2 x i64>, <2 x i64> addrspace(1)* %in 30 store <2 x i64> %ld, <2 x i64> addrspace(1)* %out 31 ret void 32} 33 34; FUNC-LABEL: {{^}}global_load_v3i64: 35; GCN-NOHSA-DAG: buffer_load_dwordx4 36; GCN-NOHSA-DAG: buffer_load_dwordx2 37; GCN-HSA-DAG: flat_load_dwordx4 38; GCN-HSA-DAG: flat_load_dwordx2 39 40; EG-DAG: VTX_READ_32 41; EG-DAG: VTX_READ_32 42; EG-DAG: VTX_READ_32 43; EG-DAG: VTX_READ_32 44; EG-DAG: VTX_READ_32 45; EG-DAG: VTX_READ_32 46define void @global_load_v3i64(<3 x i64> addrspace(1)* %out, <3 x i64> addrspace(1)* %in) #0 { 47entry: 48 %ld = load <3 x i64>, <3 x i64> addrspace(1)* %in 49 store <3 x i64> %ld, <3 x i64> addrspace(1)* %out 50 ret void 51} 52 53; FUNC-LABEL: {{^}}global_load_v4i64: 54; GCN-NOHSA: buffer_load_dwordx4 55; GCN-NOHSA: buffer_load_dwordx4 56 57; GCN-HSA: flat_load_dwordx4 58; GCN-HSA: flat_load_dwordx4 59 60; EG: VTX_READ_128 61; EG: VTX_READ_128 62define void @global_load_v4i64(<4 x i64> addrspace(1)* %out, <4 x i64> addrspace(1)* %in) #0 { 63entry: 64 %ld = load <4 x i64>, <4 x i64> addrspace(1)* %in 65 store <4 x i64> %ld, <4 x i64> addrspace(1)* %out 66 ret void 67} 68 69; FUNC-LABEL: {{^}}global_load_v8i64: 70; GCN-NOHSA: buffer_load_dwordx4 71; GCN-NOHSA: buffer_load_dwordx4 72; GCN-NOHSA: buffer_load_dwordx4 73; GCN-NOHSA: buffer_load_dwordx4 74 75; GCN-HSA: flat_load_dwordx4 76; GCN-HSA: flat_load_dwordx4 77; GCN-HSA: flat_load_dwordx4 78; GCN-HSA: flat_load_dwordx4 79 80; EG: VTX_READ_128 81; EG: VTX_READ_128 82; EG: VTX_READ_128 83; EG: VTX_READ_128 84define void @global_load_v8i64(<8 x i64> addrspace(1)* %out, <8 x i64> addrspace(1)* %in) #0 { 85entry: 86 %ld = load <8 x i64>, <8 x i64> addrspace(1)* %in 87 store <8 x i64> %ld, <8 x i64> addrspace(1)* %out 88 ret void 89} 90 91; FUNC-LABEL: {{^}}global_load_v16i64: 92; GCN-NOHSA: buffer_load_dwordx4 93; GCN-NOHSA: buffer_load_dwordx4 94; GCN-NOHSA: buffer_load_dwordx4 95; GCN-NOHSA: buffer_load_dwordx4 96; GCN-NOHSA: buffer_load_dwordx4 97; GCN-NOHSA: buffer_load_dwordx4 98; GCN-NOHSA: buffer_load_dwordx4 99; GCN-NOHSA: buffer_load_dwordx4 100 101; GCN-HSA: flat_load_dwordx4 102; GCN-HSA: flat_load_dwordx4 103; GCN-HSA: flat_load_dwordx4 104; GCN-HSA: flat_load_dwordx4 105; GCN-HSA: flat_load_dwordx4 106; GCN-HSA: flat_load_dwordx4 107; GCN-HSA: flat_load_dwordx4 108; GCN-HSA: flat_load_dwordx4 109 110; EG: VTX_READ_128 111; EG: VTX_READ_128 112; EG: VTX_READ_128 113; EG: VTX_READ_128 114; EG: VTX_READ_128 115; EG: VTX_READ_128 116; EG: VTX_READ_128 117; EG: VTX_READ_128 118define void @global_load_v16i64(<16 x i64> addrspace(1)* %out, <16 x i64> addrspace(1)* %in) #0 { 119entry: 120 %ld = load <16 x i64>, <16 x i64> addrspace(1)* %in 121 store <16 x i64> %ld, <16 x i64> addrspace(1)* %out 122 ret void 123} 124 125attributes #0 = { nounwind } 126