blob: 857be849ef5ecd19aba24a1c5a7984752e08c4c4 [file] [log] [blame]
Jan Veselycd6b12b2016-09-02 18:52:28 +00001; RUN: llc -march=amdgcn -mcpu=verde -verify-machineinstrs < %s | FileCheck -check-prefix=GCN -check-prefix=FUNC %s
2; RUN: llc -march=amdgcn -mcpu=tonga -verify-machineinstrs < %s | FileCheck -check-prefix=GCN -check-prefix=FUNC %s
3; RUN: llc -march=r600 -mcpu=redwood < %s | FileCheck -check-prefix=EG -check-prefix=FUNC %s
4; RUN: llc -march=r600 -mcpu=cayman < %s | FileCheck -check-prefix=CM -check-prefix=FUNC %s
5
6; FUNC-LABEL: {{^}}store_local_i1:
7; EG: LDS_BYTE_WRITE
8; GCN: ds_write_b8
9define void @store_local_i1(i1 addrspace(3)* %out) {
10entry:
11 store i1 true, i1 addrspace(3)* %out
12 ret void
13}
14
15; FUNC-LABEL: {{^}}store_local_i8:
16; EG: LDS_BYTE_WRITE
17
18; GCN: ds_write_b8
19define void @store_local_i8(i8 addrspace(3)* %out, i8 %in) {
20 store i8 %in, i8 addrspace(3)* %out
21 ret void
22}
23
24; FUNC-LABEL: {{^}}store_local_i16:
25; EG: LDS_SHORT_WRITE
26
27; GCN: ds_write_b16
28define void @store_local_i16(i16 addrspace(3)* %out, i16 %in) {
29 store i16 %in, i16 addrspace(3)* %out
30 ret void
31}
32
33; FUNC-LABEL: {{^}}store_local_v2i16:
34; EG: LDS_WRITE
35
36; CM: LDS_WRITE
37
38; GCN: ds_write_b32
39define void @store_local_v2i16(<2 x i16> addrspace(3)* %out, <2 x i16> %in) {
40entry:
41 store <2 x i16> %in, <2 x i16> addrspace(3)* %out
42 ret void
43}
44
45; FUNC-LABEL: {{^}}store_local_v4i8:
46; EG: LDS_WRITE
47
48; CM: LDS_WRITE
49
50; GCN: ds_write_b32
51define void @store_local_v4i8(<4 x i8> addrspace(3)* %out, <4 x i8> %in) {
52entry:
53 store <4 x i8> %in, <4 x i8> addrspace(3)* %out
54 ret void
55}
56
57; FUNC-LABEL: {{^}}store_local_v2i32:
58; EG: LDS_WRITE
59; EG: LDS_WRITE
60
61; CM: LDS_WRITE
62; CM: LDS_WRITE
63
64; GCN: ds_write_b64
65define void @store_local_v2i32(<2 x i32> addrspace(3)* %out, <2 x i32> %in) {
66entry:
67 store <2 x i32> %in, <2 x i32> addrspace(3)* %out
68 ret void
69}
70
71; FUNC-LABEL: {{^}}store_local_v4i32:
72; EG: LDS_WRITE
73; EG: LDS_WRITE
74; EG: LDS_WRITE
75; EG: LDS_WRITE
76
77; CM: LDS_WRITE
78; CM: LDS_WRITE
79; CM: LDS_WRITE
80; CM: LDS_WRITE
81
82; GCN: ds_write2_b64
83define void @store_local_v4i32(<4 x i32> addrspace(3)* %out, <4 x i32> %in) {
84entry:
85 store <4 x i32> %in, <4 x i32> addrspace(3)* %out
86 ret void
87}
88
89; FUNC-LABEL: {{^}}store_local_v4i32_align4:
90; EG: LDS_WRITE
91; EG: LDS_WRITE
92; EG: LDS_WRITE
93; EG: LDS_WRITE
94
95; CM: LDS_WRITE
96; CM: LDS_WRITE
97; CM: LDS_WRITE
98; CM: LDS_WRITE
99
100; GCN: ds_write2_b32
101; GCN: ds_write2_b32
102define void @store_local_v4i32_align4(<4 x i32> addrspace(3)* %out, <4 x i32> %in) {
103entry:
104 store <4 x i32> %in, <4 x i32> addrspace(3)* %out, align 4
105 ret void
106}
107
108; FUNC-LABEL: {{^}}store_local_i64_i8:
109; EG: LDS_BYTE_WRITE
110; GCN: ds_write_b8
111define void @store_local_i64_i8(i8 addrspace(3)* %out, i64 %in) {
112entry:
113 %0 = trunc i64 %in to i8
114 store i8 %0, i8 addrspace(3)* %out
115 ret void
116}
117
118; FUNC-LABEL: {{^}}store_local_i64_i16:
119; EG: LDS_SHORT_WRITE
120; GCN: ds_write_b16
121define void @store_local_i64_i16(i16 addrspace(3)* %out, i64 %in) {
122entry:
123 %0 = trunc i64 %in to i16
124 store i16 %0, i16 addrspace(3)* %out
125 ret void
126}