blob: 180807df7b9add3186f2e985e5f466004e836622 [file] [log] [blame]
Matt Arsenaultd1097a32016-06-02 19:54:26 +00001; RUN: llc -march=amdgcn -verify-machineinstrs < %s | FileCheck -check-prefix=GCN -check-prefix=FUNC %s
2; RUN: llc -mtriple=amdgcn--amdhsa -mcpu=kaveri -verify-machineinstrs < %s | FileCheck -check-prefix=GCN -check-prefix=FUNC %s
3; RUN: llc -march=amdgcn -mcpu=tonga -verify-machineinstrs < %s | FileCheck -check-prefix=GCN -check-prefix=FUNC %s
4; RUN: llc -march=r600 -mcpu=redwood < %s | FileCheck -check-prefix=EG -check-prefix=FUNC %s
5
6; FUNC-LABEL: {{^}}local_load_i64:
7; GCN: ds_read_b64 [[VAL:v\[[0-9]+:[0-9]+\]]], v{{[0-9]+}}{{$}}
8; GCN: ds_write_b64 v{{[0-9]+}}, [[VAL]]
9
10; EG: LDS_READ_RET
11; EG: LDS_READ_RET
12define void @local_load_i64(i64 addrspace(3)* %out, i64 addrspace(3)* %in) #0 {
13 %ld = load i64, i64 addrspace(3)* %in
14 store i64 %ld, i64 addrspace(3)* %out
15 ret void
16}
17
18; FUNC-LABEL: {{^}}local_load_v2i64:
19; GCN: ds_read2_b64
20
21; EG: LDS_READ_RET
22; EG: LDS_READ_RET
23; EG: LDS_READ_RET
24; EG: LDS_READ_RET
25define void @local_load_v2i64(<2 x i64> addrspace(3)* %out, <2 x i64> addrspace(3)* %in) #0 {
26entry:
27 %ld = load <2 x i64>, <2 x i64> addrspace(3)* %in
28 store <2 x i64> %ld, <2 x i64> addrspace(3)* %out
29 ret void
30}
31
32; FUNC-LABEL: {{^}}local_load_v3i64:
33; GCN-DAG: ds_read2_b64
34; GCN-DAG: ds_read_b64
35
36; EG: LDS_READ_RET
37; EG: LDS_READ_RET
38; EG: LDS_READ_RET
39; EG: LDS_READ_RET
40; EG: LDS_READ_RET
41; EG: LDS_READ_RET
42define void @local_load_v3i64(<3 x i64> addrspace(3)* %out, <3 x i64> addrspace(3)* %in) #0 {
43entry:
44 %ld = load <3 x i64>, <3 x i64> addrspace(3)* %in
45 store <3 x i64> %ld, <3 x i64> addrspace(3)* %out
46 ret void
47}
48
49; FUNC-LABEL: {{^}}local_load_v4i64:
50; GCN: ds_read2_b64
51; GCN: ds_read2_b64
52
53; EG: LDS_READ_RET
54; EG: LDS_READ_RET
55; EG: LDS_READ_RET
56; EG: LDS_READ_RET
57
58; EG: LDS_READ_RET
59; EG: LDS_READ_RET
60; EG: LDS_READ_RET
61; EG: LDS_READ_RET
62define void @local_load_v4i64(<4 x i64> addrspace(3)* %out, <4 x i64> addrspace(3)* %in) #0 {
63entry:
64 %ld = load <4 x i64>, <4 x i64> addrspace(3)* %in
65 store <4 x i64> %ld, <4 x i64> addrspace(3)* %out
66 ret void
67}
68
69; FUNC-LABEL: {{^}}local_load_v8i64:
70; GCN: ds_read2_b64
71; GCN: ds_read2_b64
72; GCN: ds_read2_b64
73; GCN: ds_read2_b64
74
75; EG: LDS_READ_RET
76; EG: LDS_READ_RET
77; EG: LDS_READ_RET
78; EG: LDS_READ_RET
79; EG: LDS_READ_RET
80; EG: LDS_READ_RET
81; EG: LDS_READ_RET
82; EG: LDS_READ_RET
83; EG: LDS_READ_RET
84; EG: LDS_READ_RET
85; EG: LDS_READ_RET
86; EG: LDS_READ_RET
87; EG: LDS_READ_RET
88; EG: LDS_READ_RET
89; EG: LDS_READ_RET
90; EG: LDS_READ_RET
91define void @local_load_v8i64(<8 x i64> addrspace(3)* %out, <8 x i64> addrspace(3)* %in) #0 {
92entry:
93 %ld = load <8 x i64>, <8 x i64> addrspace(3)* %in
94 store <8 x i64> %ld, <8 x i64> addrspace(3)* %out
95 ret void
96}
97
98; FUNC-LABEL: {{^}}local_load_v16i64:
99; GCN: ds_read2_b64
100; GCN: ds_read2_b64
101; GCN: ds_read2_b64
102; GCN: ds_read2_b64
103; GCN: ds_read2_b64
104; GCN: ds_read2_b64
105; GCN: ds_read2_b64
106; GCN: ds_read2_b64
107
108; EG: LDS_READ_RET
109; EG: LDS_READ_RET
110; EG: LDS_READ_RET
111; EG: LDS_READ_RET
112
113; EG: LDS_READ_RET
114; EG: LDS_READ_RET
115; EG: LDS_READ_RET
116; EG: LDS_READ_RET
117
118; EG: LDS_READ_RET
119; EG: LDS_READ_RET
120; EG: LDS_READ_RET
121; EG: LDS_READ_RET
122
123; EG: LDS_READ_RET
124; EG: LDS_READ_RET
125; EG: LDS_READ_RET
126; EG: LDS_READ_RET
127
128; EG: LDS_READ_RET
129; EG: LDS_READ_RET
130; EG: LDS_READ_RET
131; EG: LDS_READ_RET
132
133; EG: LDS_READ_RET
134; EG: LDS_READ_RET
135; EG: LDS_READ_RET
136; EG: LDS_READ_RET
137
138; EG: LDS_READ_RET
139; EG: LDS_READ_RET
140; EG: LDS_READ_RET
141; EG: LDS_READ_RET
142
143; EG: LDS_READ_RET
144; EG: LDS_READ_RET
145; EG: LDS_READ_RET
146; EG: LDS_READ_RET
147define void @local_load_v16i64(<16 x i64> addrspace(3)* %out, <16 x i64> addrspace(3)* %in) #0 {
148entry:
149 %ld = load <16 x i64>, <16 x i64> addrspace(3)* %in
150 store <16 x i64> %ld, <16 x i64> addrspace(3)* %out
151 ret void
152}
153
154attributes #0 = { nounwind }