blob: ffb67101fd786524244a223c38fcf0cbc1f2e814 [file] [log] [blame]
Matt Arsenault3f71c0e2017-11-29 00:55:57 +00001; RUN: llc -march=amdgcn -verify-machineinstrs < %s | FileCheck -check-prefixes=GCN,SICIVI,FUNC %s
2; RUN: llc -mtriple=amdgcn--amdhsa -mcpu=kaveri -verify-machineinstrs < %s | FileCheck -check-prefixes=GCN,SICIVI,FUNC %s
3; RUN: llc -march=amdgcn -mcpu=tonga -verify-machineinstrs < %s | FileCheck -check-prefixes=GCN,SICIVI,FUNC %s
4; RUN: llc -march=amdgcn -mcpu=gfx900 -verify-machineinstrs < %s | FileCheck -check-prefixes=GCN,GFX9,FUNC %s
5; RUN: llc -march=r600 -mcpu=redwood < %s | FileCheck -check-prefixes=EG,FUNC %s
Matt Arsenaultd1097a32016-06-02 19:54:26 +00006
7; FUNC-LABEL: {{^}}local_load_f64:
Matt Arsenault3f71c0e2017-11-29 00:55:57 +00008; SICIV: s_mov_b32 m0
9; GFX9-NOT: m0
10
Matt Arsenaultd1097a32016-06-02 19:54:26 +000011; GCN: ds_read_b64 [[VAL:v\[[0-9]+:[0-9]+\]]], v{{[0-9]+}}{{$}}
12; GCN: ds_write_b64 v{{[0-9]+}}, [[VAL]]
13
14; EG: LDS_READ_RET
15; EG: LDS_READ_RET
Matt Arsenault3dbeefa2017-03-21 21:39:51 +000016define amdgpu_kernel void @local_load_f64(double addrspace(3)* %out, double addrspace(3)* %in) #0 {
Matt Arsenaultd1097a32016-06-02 19:54:26 +000017 %ld = load double, double addrspace(3)* %in
18 store double %ld, double addrspace(3)* %out
19 ret void
20}
21
22; FUNC-LABEL: {{^}}local_load_v2f64:
Matt Arsenault3f71c0e2017-11-29 00:55:57 +000023; SICIV: s_mov_b32 m0
24; GFX9-NOT: m0
25
Matt Arsenaultd1097a32016-06-02 19:54:26 +000026; GCN: ds_read2_b64
27
28; EG: LDS_READ_RET
29; EG: LDS_READ_RET
30; EG: LDS_READ_RET
31; EG: LDS_READ_RET
Matt Arsenault3dbeefa2017-03-21 21:39:51 +000032define amdgpu_kernel void @local_load_v2f64(<2 x double> addrspace(3)* %out, <2 x double> addrspace(3)* %in) #0 {
Matt Arsenaultd1097a32016-06-02 19:54:26 +000033entry:
34 %ld = load <2 x double>, <2 x double> addrspace(3)* %in
35 store <2 x double> %ld, <2 x double> addrspace(3)* %out
36 ret void
37}
38
39; FUNC-LABEL: {{^}}local_load_v3f64:
Matt Arsenault3f71c0e2017-11-29 00:55:57 +000040; SICIV: s_mov_b32 m0
41; GFX9-NOT: m0
42
Matt Arsenaultd1097a32016-06-02 19:54:26 +000043; GCN-DAG: ds_read2_b64
44; GCN-DAG: ds_read_b64
45
46; EG: LDS_READ_RET
47; EG: LDS_READ_RET
48; EG: LDS_READ_RET
49; EG: LDS_READ_RET
50; EG: LDS_READ_RET
51; EG: LDS_READ_RET
Matt Arsenault3dbeefa2017-03-21 21:39:51 +000052define amdgpu_kernel void @local_load_v3f64(<3 x double> addrspace(3)* %out, <3 x double> addrspace(3)* %in) #0 {
Matt Arsenaultd1097a32016-06-02 19:54:26 +000053entry:
54 %ld = load <3 x double>, <3 x double> addrspace(3)* %in
55 store <3 x double> %ld, <3 x double> addrspace(3)* %out
56 ret void
57}
58
59; FUNC-LABEL: {{^}}local_load_v4f64:
Matt Arsenault3f71c0e2017-11-29 00:55:57 +000060; SICIV: s_mov_b32 m0
61; GFX9-NOT: m0
62
Matt Arsenaultd1097a32016-06-02 19:54:26 +000063; GCN: ds_read2_b64
64; GCN: ds_read2_b64
65
66; EG: LDS_READ_RET
67; EG: LDS_READ_RET
68; EG: LDS_READ_RET
69; EG: LDS_READ_RET
70
71; EG: LDS_READ_RET
72; EG: LDS_READ_RET
73; EG: LDS_READ_RET
74; EG: LDS_READ_RET
Matt Arsenault3dbeefa2017-03-21 21:39:51 +000075define amdgpu_kernel void @local_load_v4f64(<4 x double> addrspace(3)* %out, <4 x double> addrspace(3)* %in) #0 {
Matt Arsenaultd1097a32016-06-02 19:54:26 +000076entry:
77 %ld = load <4 x double>, <4 x double> addrspace(3)* %in
78 store <4 x double> %ld, <4 x double> addrspace(3)* %out
79 ret void
80}
81
82; FUNC-LABEL: {{^}}local_load_v8f64:
Matt Arsenault3f71c0e2017-11-29 00:55:57 +000083; SICIV: s_mov_b32 m0
84; GFX9-NOT: m0
85
Matt Arsenaultd1097a32016-06-02 19:54:26 +000086; GCN: ds_read2_b64
87; GCN: ds_read2_b64
88; GCN: ds_read2_b64
89; GCN: ds_read2_b64
90
91; EG: LDS_READ_RET
92; EG: LDS_READ_RET
93; EG: LDS_READ_RET
94; EG: LDS_READ_RET
95; EG: LDS_READ_RET
96; EG: LDS_READ_RET
97; EG: LDS_READ_RET
98; EG: LDS_READ_RET
99; EG: LDS_READ_RET
100; EG: LDS_READ_RET
101; EG: LDS_READ_RET
102; EG: LDS_READ_RET
103; EG: LDS_READ_RET
104; EG: LDS_READ_RET
105; EG: LDS_READ_RET
106; EG: LDS_READ_RET
Matt Arsenault3dbeefa2017-03-21 21:39:51 +0000107define amdgpu_kernel void @local_load_v8f64(<8 x double> addrspace(3)* %out, <8 x double> addrspace(3)* %in) #0 {
Matt Arsenaultd1097a32016-06-02 19:54:26 +0000108entry:
109 %ld = load <8 x double>, <8 x double> addrspace(3)* %in
110 store <8 x double> %ld, <8 x double> addrspace(3)* %out
111 ret void
112}
113
114; FUNC-LABEL: {{^}}local_load_v16f64:
Matt Arsenault3f71c0e2017-11-29 00:55:57 +0000115; SICIV: s_mov_b32 m0
116; GFX9-NOT: m0
117
Matt Arsenaultd1097a32016-06-02 19:54:26 +0000118; GCN: ds_read2_b64
119; GCN: ds_read2_b64
120; GCN: ds_read2_b64
121; GCN: ds_read2_b64
122; GCN: ds_read2_b64
123; GCN: ds_read2_b64
124; GCN: ds_read2_b64
125; GCN: ds_read2_b64
126
127; EG: LDS_READ_RET
128; EG: LDS_READ_RET
129; EG: LDS_READ_RET
130; EG: LDS_READ_RET
131
132; EG: LDS_READ_RET
133; EG: LDS_READ_RET
134; EG: LDS_READ_RET
135; EG: LDS_READ_RET
136
137; EG: LDS_READ_RET
138; EG: LDS_READ_RET
139; EG: LDS_READ_RET
140; EG: LDS_READ_RET
141
142; EG: LDS_READ_RET
143; EG: LDS_READ_RET
144; EG: LDS_READ_RET
145; EG: LDS_READ_RET
146
147; EG: LDS_READ_RET
148; EG: LDS_READ_RET
149; EG: LDS_READ_RET
150; EG: LDS_READ_RET
151
152; EG: LDS_READ_RET
153; EG: LDS_READ_RET
154; EG: LDS_READ_RET
155; EG: LDS_READ_RET
156
157; EG: LDS_READ_RET
158; EG: LDS_READ_RET
159; EG: LDS_READ_RET
160; EG: LDS_READ_RET
161
162; EG: LDS_READ_RET
163; EG: LDS_READ_RET
164; EG: LDS_READ_RET
165; EG: LDS_READ_RET
Matt Arsenault3dbeefa2017-03-21 21:39:51 +0000166define amdgpu_kernel void @local_load_v16f64(<16 x double> addrspace(3)* %out, <16 x double> addrspace(3)* %in) #0 {
Matt Arsenaultd1097a32016-06-02 19:54:26 +0000167entry:
168 %ld = load <16 x double>, <16 x double> addrspace(3)* %in
169 store <16 x double> %ld, <16 x double> addrspace(3)* %out
170 ret void
171}
172
173attributes #0 = { nounwind }