[InstCombine] Signed saturation patterns
[llvm-complete.git] / test / CodeGen / AMDGPU / store-local.ll
blobf0e76ac59510a337acd2bef4986ab2b22b0df5b5
1 ; RUN: llc -march=amdgcn -mtriple=amdgcn-- -mcpu=verde -verify-machineinstrs < %s | FileCheck -check-prefixes=GCN,SICIVI,FUNC %s
2 ; RUN: llc -march=amdgcn -mtriple=amdgcn-- -mcpu=tonga -verify-machineinstrs < %s | FileCheck -check-prefixes=GCN,SICIVI,FUNC %s
3 ; RUN: llc -march=amdgcn -mtriple=amdgcn-- -mcpu=gfx900 -verify-machineinstrs < %s | FileCheck -check-prefixes=GCN,GFX9,FUNC %s
4 ; RUN: llc -march=r600 -mtriple=r600-- -mcpu=redwood < %s | FileCheck -check-prefixes=EG,FUNC %s
5 ; RUN: llc -march=r600 -mtriple=r600-- -mcpu=cayman < %s | FileCheck -check-prefixes=CM,FUNC %s
7 ; FUNC-LABEL: {{^}}store_local_i1:
8 ; SICIVI: s_mov_b32 m0
9 ; GFX9-NOT: m0
11 ; EG: LDS_BYTE_WRITE
13 ; CM: LDS_BYTE_WRITE
15 ; GCN: ds_write_b8
16 define amdgpu_kernel void @store_local_i1(i1 addrspace(3)* %out) {
17 entry:
18   store i1 true, i1 addrspace(3)* %out
19   ret void
22 ; FUNC-LABEL: {{^}}store_local_i8:
23 ; SICIVI: s_mov_b32 m0
24 ; GFX9-NOT: m0
26 ; EG: LDS_BYTE_WRITE
28 ; CM: LDS_BYTE_WRITE
30 ; GCN: ds_write_b8
31 define amdgpu_kernel void @store_local_i8(i8 addrspace(3)* %out, i8 %in) {
32   store i8 %in, i8 addrspace(3)* %out
33   ret void
36 ; FUNC-LABEL: {{^}}store_local_i16:
37 ; SICIVI: s_mov_b32 m0
38 ; GFX9-NOT: m0
40 ; EG: LDS_SHORT_WRITE
42 ; CM: LDS_SHORT_WRITE
44 ; GCN: ds_write_b16
45 define amdgpu_kernel void @store_local_i16(i16 addrspace(3)* %out, i16 %in) {
46   store i16 %in, i16 addrspace(3)* %out
47   ret void
50 ; FUNC-LABEL: {{^}}store_local_v2i16:
51 ; SICIVI: s_mov_b32 m0
52 ; GFX9-NOT: m0
54 ; EG: LDS_WRITE
56 ; CM: LDS_WRITE
58 ; GCN: ds_write_b32
59 define amdgpu_kernel void @store_local_v2i16(<2 x i16> addrspace(3)* %out, <2 x i16> %in) {
60 entry:
61   store <2 x i16> %in, <2 x i16> addrspace(3)* %out
62   ret void
65 ; FUNC-LABEL: {{^}}store_local_v4i8:
66 ; SICIVI: s_mov_b32 m0
67 ; GFX9-NOT: m0
69 ; EG: LDS_WRITE
71 ; CM: LDS_WRITE
73 ; GCN: ds_write_b32
74 define amdgpu_kernel void @store_local_v4i8(<4 x i8> addrspace(3)* %out, <4 x i8> %in) {
75 entry:
76   store <4 x i8> %in, <4 x i8> addrspace(3)* %out
77   ret void
80 ; FUNC-LABEL: {{^}}store_local_v4i8_unaligned:
81 ; SICIVI: s_mov_b32 m0
82 ; GFX9-NOT: m0
84 ; EG: LDS_BYTE_WRITE
85 ; EG: LDS_BYTE_WRITE
86 ; EG: LDS_BYTE_WRITE
87 ; EG: LDS_BYTE_WRITE
88 ; EG-NOT: LDS_WRITE
90 ; CM: LDS_BYTE_WRITE
91 ; CM: LDS_BYTE_WRITE
92 ; CM: LDS_BYTE_WRITE
93 ; CM: LDS_BYTE_WRITE
94 ; CM-NOT: LDS_WRITE
96 ; GCN: ds_write_b8
97 ; GCN: ds_write_b8
98 ; GCN: ds_write_b8
99 ; GCN: ds_write_b8
100 define amdgpu_kernel void @store_local_v4i8_unaligned(<4 x i8> addrspace(3)* %out, <4 x i8> %in) {
101 entry:
102   store <4 x i8> %in, <4 x i8> addrspace(3)* %out, align 1
103   ret void
106 ; FUNC-LABEL: {{^}}store_local_v4i8_halfaligned:
107 ; SICIVI: s_mov_b32 m0
108 ; GFX9-NOT: m0
110 ; EG: LDS_SHORT_WRITE
111 ; EG: LDS_SHORT_WRITE
112 ; EG-NOT: LDS_WRITE
114 ; CM: LDS_SHORT_WRITE
115 ; CM: LDS_SHORT_WRITE
116 ; CM-NOT: LDS_WRITE
118 ; GCN: ds_write_b16
119 ; GCN: ds_write_b16
120 define amdgpu_kernel void @store_local_v4i8_halfaligned(<4 x i8> addrspace(3)* %out, <4 x i8> %in) {
121 entry:
122   store <4 x i8> %in, <4 x i8> addrspace(3)* %out, align 2
123   ret void
126 ; FUNC-LABEL: {{^}}store_local_v2i32:
127 ; SICIVI: s_mov_b32 m0
128 ; GFX9-NOT: m0
130 ; EG: LDS_WRITE
131 ; EG: LDS_WRITE
132 ; EG-NOT: LDS_WRITE
134 ; CM: LDS_WRITE
135 ; CM: LDS_WRITE
136 ; CM-NOT: LDS_WRITE
138 ; GCN: ds_write_b64
139 define amdgpu_kernel void @store_local_v2i32(<2 x i32> addrspace(3)* %out, <2 x i32> %in) {
140 entry:
141   store <2 x i32> %in, <2 x i32> addrspace(3)* %out
142   ret void
145 ; FUNC-LABEL: {{^}}store_local_v4i32:
146 ; SICIVI: s_mov_b32 m0
147 ; GFX9-NOT: m0
149 ; EG: LDS_WRITE
150 ; EG: LDS_WRITE
151 ; EG: LDS_WRITE
152 ; EG: LDS_WRITE
154 ; CM: LDS_WRITE
155 ; CM: LDS_WRITE
156 ; CM: LDS_WRITE
157 ; CM: LDS_WRITE
159 ; GCN: ds_write2_b64
160 define amdgpu_kernel void @store_local_v4i32(<4 x i32> addrspace(3)* %out, <4 x i32> %in) {
161 entry:
162   store <4 x i32> %in, <4 x i32> addrspace(3)* %out
163   ret void
166 ; FUNC-LABEL: {{^}}store_local_v4i32_align4:
167 ; SICIVI: s_mov_b32 m0
168 ; GFX9-NOT: m0
170 ; EG: LDS_WRITE
171 ; EG: LDS_WRITE
172 ; EG: LDS_WRITE
173 ; EG: LDS_WRITE
175 ; CM: LDS_WRITE
176 ; CM: LDS_WRITE
177 ; CM: LDS_WRITE
178 ; CM: LDS_WRITE
180 ; GCN: ds_write2_b32
181 ; GCN: ds_write2_b32
182 define amdgpu_kernel void @store_local_v4i32_align4(<4 x i32> addrspace(3)* %out, <4 x i32> %in) {
183 entry:
184   store <4 x i32> %in, <4 x i32> addrspace(3)* %out, align 4
185   ret void
188 ; FUNC-LABEL: {{^}}store_local_i64_i8:
189 ; SICIVI: s_mov_b32 m0
190 ; GFX9-NOT: m0
192 ; EG: LDS_BYTE_WRITE
193 ; GCN: ds_write_b8
194 define amdgpu_kernel void @store_local_i64_i8(i8 addrspace(3)* %out, i64 %in) {
195 entry:
196   %0 = trunc i64 %in to i8
197   store i8 %0, i8 addrspace(3)* %out
198   ret void
201 ; FUNC-LABEL: {{^}}store_local_i64_i16:
202 ; SICIVI: s_mov_b32 m0
203 ; GFX9-NOT: m0
205 ; EG: LDS_SHORT_WRITE
206 ; GCN: ds_write_b16
207 define amdgpu_kernel void @store_local_i64_i16(i16 addrspace(3)* %out, i64 %in) {
208 entry:
209   %0 = trunc i64 %in to i16
210   store i16 %0, i16 addrspace(3)* %out
211   ret void