blob: b5367319ec039cf24772b9a49e92b7f4c217c7d9 [file] [log] [blame]
Matt Arsenaultd1097a32016-06-02 19:54:26 +00001; 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 }