1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -mattr="+wavefrontsize32" -verify-machineinstrs < %s | FileCheck -check-prefixes=GCN,GFX11,SDAG-GFX11 %s
3 ; RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -mattr="+wavefrontsize32" -verify-machineinstrs < %s | FileCheck -check-prefixes=GCN,GFX10,SDAG-GFX10 %s
5 ; RUN: llc -global-isel -global-isel-abort=2 -mtriple=amdgcn -mcpu=gfx1100 -mattr="+wavefrontsize32" -verify-machineinstrs < %s 2>%t | FileCheck -check-prefixes=GCN,GFX11,GISEL-GFX11 %s
6 ; RUN: FileCheck --check-prefix=ERR %s < %t
7 ; RUN: llc -global-isel -global-isel-abort=2 -mtriple=amdgcn -mcpu=gfx1010 -mattr="+wavefrontsize32" -verify-machineinstrs < %s 2>%t | FileCheck -check-prefixes=GCN,GFX10,GISEL-GFX10 %s
8 ; RUN: FileCheck --check-prefix=ERR %s < %t
10 ; Note: GlobalISel abort is disabled so we don't crash on i1 inputs.
11 ; They are allowed in DAGISel but we (intentionally) don't support them
14 ; ERR: warning: Instruction selection used fallback path for v_icmp_i1_ne0
16 declare i32 @llvm.amdgcn.icmp.i32(i32, i32, i32) #0
17 declare i32 @llvm.amdgcn.icmp.i64(i64, i64, i32) #0
18 declare i32 @llvm.amdgcn.icmp.i16(i16, i16, i32) #0
19 declare i32 @llvm.amdgcn.icmp.i1(i1, i1, i32) #0
21 define amdgpu_kernel void @v_icmp_i32_eq(ptr addrspace(1) %out, i32 %src) {
22 ; SDAG-GFX11-LABEL: v_icmp_i32_eq:
23 ; SDAG-GFX11: ; %bb.0:
24 ; SDAG-GFX11-NEXT: s_clause 0x1
25 ; SDAG-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c
26 ; SDAG-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x24
27 ; SDAG-GFX11-NEXT: s_waitcnt lgkmcnt(0)
28 ; SDAG-GFX11-NEXT: v_cmp_eq_u32_e64 s2, 0x64, s2
29 ; SDAG-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)
30 ; SDAG-GFX11-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
31 ; SDAG-GFX11-NEXT: global_store_b32 v0, v1, s[0:1]
32 ; SDAG-GFX11-NEXT: s_endpgm
34 ; SDAG-GFX10-LABEL: v_icmp_i32_eq:
35 ; SDAG-GFX10: ; %bb.0:
36 ; SDAG-GFX10-NEXT: s_clause 0x1
37 ; SDAG-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c
38 ; SDAG-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24
39 ; SDAG-GFX10-NEXT: v_mov_b32_e32 v0, 0
40 ; SDAG-GFX10-NEXT: s_waitcnt lgkmcnt(0)
41 ; SDAG-GFX10-NEXT: v_cmp_eq_u32_e64 s2, 0x64, s2
42 ; SDAG-GFX10-NEXT: v_mov_b32_e32 v1, s2
43 ; SDAG-GFX10-NEXT: global_store_dword v0, v1, s[0:1]
44 ; SDAG-GFX10-NEXT: s_endpgm
46 ; GISEL-GFX11-LABEL: v_icmp_i32_eq:
47 ; GISEL-GFX11: ; %bb.0:
48 ; GISEL-GFX11-NEXT: s_clause 0x1
49 ; GISEL-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c
50 ; GISEL-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x24
51 ; GISEL-GFX11-NEXT: v_mov_b32_e32 v1, 0
52 ; GISEL-GFX11-NEXT: s_waitcnt lgkmcnt(0)
53 ; GISEL-GFX11-NEXT: v_cmp_eq_u32_e64 s2, 0x64, s2
54 ; GISEL-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)
55 ; GISEL-GFX11-NEXT: v_mov_b32_e32 v0, s2
56 ; GISEL-GFX11-NEXT: global_store_b32 v1, v0, s[0:1]
57 ; GISEL-GFX11-NEXT: s_endpgm
59 ; GISEL-GFX10-LABEL: v_icmp_i32_eq:
60 ; GISEL-GFX10: ; %bb.0:
61 ; GISEL-GFX10-NEXT: s_clause 0x1
62 ; GISEL-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c
63 ; GISEL-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24
64 ; GISEL-GFX10-NEXT: v_mov_b32_e32 v1, 0
65 ; GISEL-GFX10-NEXT: s_waitcnt lgkmcnt(0)
66 ; GISEL-GFX10-NEXT: v_cmp_eq_u32_e64 s2, 0x64, s2
67 ; GISEL-GFX10-NEXT: v_mov_b32_e32 v0, s2
68 ; GISEL-GFX10-NEXT: global_store_dword v1, v0, s[0:1]
69 ; GISEL-GFX10-NEXT: s_endpgm
70 %result = call i32 @llvm.amdgcn.icmp.i32(i32 %src, i32 100, i32 32)
71 store i32 %result, ptr addrspace(1) %out
75 define amdgpu_kernel void @v_icmp_i32(ptr addrspace(1) %out, i32 %src) {
76 ; SDAG-GFX11-LABEL: v_icmp_i32:
77 ; SDAG-GFX11: ; %bb.0:
78 ; SDAG-GFX11-NEXT: s_endpgm
80 ; SDAG-GFX10-LABEL: v_icmp_i32:
81 ; SDAG-GFX10: ; %bb.0:
82 ; SDAG-GFX10-NEXT: s_endpgm
84 ; GISEL-GFX11-LABEL: v_icmp_i32:
85 ; GISEL-GFX11: ; %bb.0:
86 ; GISEL-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x24
87 ; GISEL-GFX11-NEXT: v_mov_b32_e32 v0, 0
88 ; GISEL-GFX11-NEXT: s_waitcnt lgkmcnt(0)
89 ; GISEL-GFX11-NEXT: global_store_b32 v0, v0, s[0:1]
90 ; GISEL-GFX11-NEXT: s_endpgm
92 ; GISEL-GFX10-LABEL: v_icmp_i32:
93 ; GISEL-GFX10: ; %bb.0:
94 ; GISEL-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24
95 ; GISEL-GFX10-NEXT: v_mov_b32_e32 v0, 0
96 ; GISEL-GFX10-NEXT: s_waitcnt lgkmcnt(0)
97 ; GISEL-GFX10-NEXT: global_store_dword v0, v0, s[0:1]
98 ; GISEL-GFX10-NEXT: s_endpgm
99 %result = call i32 @llvm.amdgcn.icmp.i32(i32 %src, i32 100, i32 30)
100 store i32 %result, ptr addrspace(1) %out
104 define amdgpu_kernel void @v_icmp_i32_ne(ptr addrspace(1) %out, i32 %src) {
105 ; SDAG-GFX11-LABEL: v_icmp_i32_ne:
106 ; SDAG-GFX11: ; %bb.0:
107 ; SDAG-GFX11-NEXT: s_clause 0x1
108 ; SDAG-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c
109 ; SDAG-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x24
110 ; SDAG-GFX11-NEXT: s_waitcnt lgkmcnt(0)
111 ; SDAG-GFX11-NEXT: v_cmp_ne_u32_e64 s2, 0x64, s2
112 ; SDAG-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)
113 ; SDAG-GFX11-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
114 ; SDAG-GFX11-NEXT: global_store_b32 v0, v1, s[0:1]
115 ; SDAG-GFX11-NEXT: s_endpgm
117 ; SDAG-GFX10-LABEL: v_icmp_i32_ne:
118 ; SDAG-GFX10: ; %bb.0:
119 ; SDAG-GFX10-NEXT: s_clause 0x1
120 ; SDAG-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c
121 ; SDAG-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24
122 ; SDAG-GFX10-NEXT: v_mov_b32_e32 v0, 0
123 ; SDAG-GFX10-NEXT: s_waitcnt lgkmcnt(0)
124 ; SDAG-GFX10-NEXT: v_cmp_ne_u32_e64 s2, 0x64, s2
125 ; SDAG-GFX10-NEXT: v_mov_b32_e32 v1, s2
126 ; SDAG-GFX10-NEXT: global_store_dword v0, v1, s[0:1]
127 ; SDAG-GFX10-NEXT: s_endpgm
129 ; GISEL-GFX11-LABEL: v_icmp_i32_ne:
130 ; GISEL-GFX11: ; %bb.0:
131 ; GISEL-GFX11-NEXT: s_clause 0x1
132 ; GISEL-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c
133 ; GISEL-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x24
134 ; GISEL-GFX11-NEXT: v_mov_b32_e32 v1, 0
135 ; GISEL-GFX11-NEXT: s_waitcnt lgkmcnt(0)
136 ; GISEL-GFX11-NEXT: v_cmp_ne_u32_e64 s2, 0x64, s2
137 ; GISEL-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)
138 ; GISEL-GFX11-NEXT: v_mov_b32_e32 v0, s2
139 ; GISEL-GFX11-NEXT: global_store_b32 v1, v0, s[0:1]
140 ; GISEL-GFX11-NEXT: s_endpgm
142 ; GISEL-GFX10-LABEL: v_icmp_i32_ne:
143 ; GISEL-GFX10: ; %bb.0:
144 ; GISEL-GFX10-NEXT: s_clause 0x1
145 ; GISEL-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c
146 ; GISEL-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24
147 ; GISEL-GFX10-NEXT: v_mov_b32_e32 v1, 0
148 ; GISEL-GFX10-NEXT: s_waitcnt lgkmcnt(0)
149 ; GISEL-GFX10-NEXT: v_cmp_ne_u32_e64 s2, 0x64, s2
150 ; GISEL-GFX10-NEXT: v_mov_b32_e32 v0, s2
151 ; GISEL-GFX10-NEXT: global_store_dword v1, v0, s[0:1]
152 ; GISEL-GFX10-NEXT: s_endpgm
153 %result = call i32 @llvm.amdgcn.icmp.i32(i32 %src, i32 100, i32 33)
154 store i32 %result, ptr addrspace(1) %out
158 define amdgpu_kernel void @v_icmp_i32_ugt(ptr addrspace(1) %out, i32 %src) {
159 ; SDAG-GFX11-LABEL: v_icmp_i32_ugt:
160 ; SDAG-GFX11: ; %bb.0:
161 ; SDAG-GFX11-NEXT: s_clause 0x1
162 ; SDAG-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c
163 ; SDAG-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x24
164 ; SDAG-GFX11-NEXT: s_waitcnt lgkmcnt(0)
165 ; SDAG-GFX11-NEXT: v_cmp_lt_u32_e64 s2, 0x64, s2
166 ; SDAG-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)
167 ; SDAG-GFX11-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
168 ; SDAG-GFX11-NEXT: global_store_b32 v0, v1, s[0:1]
169 ; SDAG-GFX11-NEXT: s_endpgm
171 ; SDAG-GFX10-LABEL: v_icmp_i32_ugt:
172 ; SDAG-GFX10: ; %bb.0:
173 ; SDAG-GFX10-NEXT: s_clause 0x1
174 ; SDAG-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c
175 ; SDAG-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24
176 ; SDAG-GFX10-NEXT: v_mov_b32_e32 v0, 0
177 ; SDAG-GFX10-NEXT: s_waitcnt lgkmcnt(0)
178 ; SDAG-GFX10-NEXT: v_cmp_lt_u32_e64 s2, 0x64, s2
179 ; SDAG-GFX10-NEXT: v_mov_b32_e32 v1, s2
180 ; SDAG-GFX10-NEXT: global_store_dword v0, v1, s[0:1]
181 ; SDAG-GFX10-NEXT: s_endpgm
183 ; GISEL-GFX11-LABEL: v_icmp_i32_ugt:
184 ; GISEL-GFX11: ; %bb.0:
185 ; GISEL-GFX11-NEXT: s_clause 0x1
186 ; GISEL-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c
187 ; GISEL-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x24
188 ; GISEL-GFX11-NEXT: v_mov_b32_e32 v1, 0
189 ; GISEL-GFX11-NEXT: s_waitcnt lgkmcnt(0)
190 ; GISEL-GFX11-NEXT: v_cmp_lt_u32_e64 s2, 0x64, s2
191 ; GISEL-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)
192 ; GISEL-GFX11-NEXT: v_mov_b32_e32 v0, s2
193 ; GISEL-GFX11-NEXT: global_store_b32 v1, v0, s[0:1]
194 ; GISEL-GFX11-NEXT: s_endpgm
196 ; GISEL-GFX10-LABEL: v_icmp_i32_ugt:
197 ; GISEL-GFX10: ; %bb.0:
198 ; GISEL-GFX10-NEXT: s_clause 0x1
199 ; GISEL-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c
200 ; GISEL-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24
201 ; GISEL-GFX10-NEXT: v_mov_b32_e32 v1, 0
202 ; GISEL-GFX10-NEXT: s_waitcnt lgkmcnt(0)
203 ; GISEL-GFX10-NEXT: v_cmp_lt_u32_e64 s2, 0x64, s2
204 ; GISEL-GFX10-NEXT: v_mov_b32_e32 v0, s2
205 ; GISEL-GFX10-NEXT: global_store_dword v1, v0, s[0:1]
206 ; GISEL-GFX10-NEXT: s_endpgm
207 %result = call i32 @llvm.amdgcn.icmp.i32(i32 %src, i32 100, i32 34)
208 store i32 %result, ptr addrspace(1) %out
212 define amdgpu_kernel void @v_icmp_i32_uge(ptr addrspace(1) %out, i32 %src) {
213 ; SDAG-GFX11-LABEL: v_icmp_i32_uge:
214 ; SDAG-GFX11: ; %bb.0:
215 ; SDAG-GFX11-NEXT: s_clause 0x1
216 ; SDAG-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c
217 ; SDAG-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x24
218 ; SDAG-GFX11-NEXT: s_waitcnt lgkmcnt(0)
219 ; SDAG-GFX11-NEXT: v_cmp_le_u32_e64 s2, 0x64, s2
220 ; SDAG-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)
221 ; SDAG-GFX11-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
222 ; SDAG-GFX11-NEXT: global_store_b32 v0, v1, s[0:1]
223 ; SDAG-GFX11-NEXT: s_endpgm
225 ; SDAG-GFX10-LABEL: v_icmp_i32_uge:
226 ; SDAG-GFX10: ; %bb.0:
227 ; SDAG-GFX10-NEXT: s_clause 0x1
228 ; SDAG-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c
229 ; SDAG-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24
230 ; SDAG-GFX10-NEXT: v_mov_b32_e32 v0, 0
231 ; SDAG-GFX10-NEXT: s_waitcnt lgkmcnt(0)
232 ; SDAG-GFX10-NEXT: v_cmp_le_u32_e64 s2, 0x64, s2
233 ; SDAG-GFX10-NEXT: v_mov_b32_e32 v1, s2
234 ; SDAG-GFX10-NEXT: global_store_dword v0, v1, s[0:1]
235 ; SDAG-GFX10-NEXT: s_endpgm
237 ; GISEL-GFX11-LABEL: v_icmp_i32_uge:
238 ; GISEL-GFX11: ; %bb.0:
239 ; GISEL-GFX11-NEXT: s_clause 0x1
240 ; GISEL-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c
241 ; GISEL-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x24
242 ; GISEL-GFX11-NEXT: v_mov_b32_e32 v1, 0
243 ; GISEL-GFX11-NEXT: s_waitcnt lgkmcnt(0)
244 ; GISEL-GFX11-NEXT: v_cmp_le_u32_e64 s2, 0x64, s2
245 ; GISEL-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)
246 ; GISEL-GFX11-NEXT: v_mov_b32_e32 v0, s2
247 ; GISEL-GFX11-NEXT: global_store_b32 v1, v0, s[0:1]
248 ; GISEL-GFX11-NEXT: s_endpgm
250 ; GISEL-GFX10-LABEL: v_icmp_i32_uge:
251 ; GISEL-GFX10: ; %bb.0:
252 ; GISEL-GFX10-NEXT: s_clause 0x1
253 ; GISEL-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c
254 ; GISEL-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24
255 ; GISEL-GFX10-NEXT: v_mov_b32_e32 v1, 0
256 ; GISEL-GFX10-NEXT: s_waitcnt lgkmcnt(0)
257 ; GISEL-GFX10-NEXT: v_cmp_le_u32_e64 s2, 0x64, s2
258 ; GISEL-GFX10-NEXT: v_mov_b32_e32 v0, s2
259 ; GISEL-GFX10-NEXT: global_store_dword v1, v0, s[0:1]
260 ; GISEL-GFX10-NEXT: s_endpgm
261 %result = call i32 @llvm.amdgcn.icmp.i32(i32 %src, i32 100, i32 35)
262 store i32 %result, ptr addrspace(1) %out
266 define amdgpu_kernel void @v_icmp_i32_ult(ptr addrspace(1) %out, i32 %src) {
267 ; SDAG-GFX11-LABEL: v_icmp_i32_ult:
268 ; SDAG-GFX11: ; %bb.0:
269 ; SDAG-GFX11-NEXT: s_clause 0x1
270 ; SDAG-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c
271 ; SDAG-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x24
272 ; SDAG-GFX11-NEXT: s_waitcnt lgkmcnt(0)
273 ; SDAG-GFX11-NEXT: v_cmp_gt_u32_e64 s2, 0x64, s2
274 ; SDAG-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)
275 ; SDAG-GFX11-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
276 ; SDAG-GFX11-NEXT: global_store_b32 v0, v1, s[0:1]
277 ; SDAG-GFX11-NEXT: s_endpgm
279 ; SDAG-GFX10-LABEL: v_icmp_i32_ult:
280 ; SDAG-GFX10: ; %bb.0:
281 ; SDAG-GFX10-NEXT: s_clause 0x1
282 ; SDAG-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c
283 ; SDAG-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24
284 ; SDAG-GFX10-NEXT: v_mov_b32_e32 v0, 0
285 ; SDAG-GFX10-NEXT: s_waitcnt lgkmcnt(0)
286 ; SDAG-GFX10-NEXT: v_cmp_gt_u32_e64 s2, 0x64, s2
287 ; SDAG-GFX10-NEXT: v_mov_b32_e32 v1, s2
288 ; SDAG-GFX10-NEXT: global_store_dword v0, v1, s[0:1]
289 ; SDAG-GFX10-NEXT: s_endpgm
291 ; GISEL-GFX11-LABEL: v_icmp_i32_ult:
292 ; GISEL-GFX11: ; %bb.0:
293 ; GISEL-GFX11-NEXT: s_clause 0x1
294 ; GISEL-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c
295 ; GISEL-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x24
296 ; GISEL-GFX11-NEXT: v_mov_b32_e32 v1, 0
297 ; GISEL-GFX11-NEXT: s_waitcnt lgkmcnt(0)
298 ; GISEL-GFX11-NEXT: v_cmp_gt_u32_e64 s2, 0x64, s2
299 ; GISEL-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)
300 ; GISEL-GFX11-NEXT: v_mov_b32_e32 v0, s2
301 ; GISEL-GFX11-NEXT: global_store_b32 v1, v0, s[0:1]
302 ; GISEL-GFX11-NEXT: s_endpgm
304 ; GISEL-GFX10-LABEL: v_icmp_i32_ult:
305 ; GISEL-GFX10: ; %bb.0:
306 ; GISEL-GFX10-NEXT: s_clause 0x1
307 ; GISEL-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c
308 ; GISEL-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24
309 ; GISEL-GFX10-NEXT: v_mov_b32_e32 v1, 0
310 ; GISEL-GFX10-NEXT: s_waitcnt lgkmcnt(0)
311 ; GISEL-GFX10-NEXT: v_cmp_gt_u32_e64 s2, 0x64, s2
312 ; GISEL-GFX10-NEXT: v_mov_b32_e32 v0, s2
313 ; GISEL-GFX10-NEXT: global_store_dword v1, v0, s[0:1]
314 ; GISEL-GFX10-NEXT: s_endpgm
315 %result = call i32 @llvm.amdgcn.icmp.i32(i32 %src, i32 100, i32 36)
316 store i32 %result, ptr addrspace(1) %out
320 define amdgpu_kernel void @v_icmp_i32_ule(ptr addrspace(1) %out, i32 %src) {
321 ; SDAG-GFX11-LABEL: v_icmp_i32_ule:
322 ; SDAG-GFX11: ; %bb.0:
323 ; SDAG-GFX11-NEXT: s_clause 0x1
324 ; SDAG-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c
325 ; SDAG-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x24
326 ; SDAG-GFX11-NEXT: s_waitcnt lgkmcnt(0)
327 ; SDAG-GFX11-NEXT: v_cmp_ge_u32_e64 s2, 0x64, s2
328 ; SDAG-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)
329 ; SDAG-GFX11-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
330 ; SDAG-GFX11-NEXT: global_store_b32 v0, v1, s[0:1]
331 ; SDAG-GFX11-NEXT: s_endpgm
333 ; SDAG-GFX10-LABEL: v_icmp_i32_ule:
334 ; SDAG-GFX10: ; %bb.0:
335 ; SDAG-GFX10-NEXT: s_clause 0x1
336 ; SDAG-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c
337 ; SDAG-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24
338 ; SDAG-GFX10-NEXT: v_mov_b32_e32 v0, 0
339 ; SDAG-GFX10-NEXT: s_waitcnt lgkmcnt(0)
340 ; SDAG-GFX10-NEXT: v_cmp_ge_u32_e64 s2, 0x64, s2
341 ; SDAG-GFX10-NEXT: v_mov_b32_e32 v1, s2
342 ; SDAG-GFX10-NEXT: global_store_dword v0, v1, s[0:1]
343 ; SDAG-GFX10-NEXT: s_endpgm
345 ; GISEL-GFX11-LABEL: v_icmp_i32_ule:
346 ; GISEL-GFX11: ; %bb.0:
347 ; GISEL-GFX11-NEXT: s_clause 0x1
348 ; GISEL-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c
349 ; GISEL-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x24
350 ; GISEL-GFX11-NEXT: v_mov_b32_e32 v1, 0
351 ; GISEL-GFX11-NEXT: s_waitcnt lgkmcnt(0)
352 ; GISEL-GFX11-NEXT: v_cmp_ge_u32_e64 s2, 0x64, s2
353 ; GISEL-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)
354 ; GISEL-GFX11-NEXT: v_mov_b32_e32 v0, s2
355 ; GISEL-GFX11-NEXT: global_store_b32 v1, v0, s[0:1]
356 ; GISEL-GFX11-NEXT: s_endpgm
358 ; GISEL-GFX10-LABEL: v_icmp_i32_ule:
359 ; GISEL-GFX10: ; %bb.0:
360 ; GISEL-GFX10-NEXT: s_clause 0x1
361 ; GISEL-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c
362 ; GISEL-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24
363 ; GISEL-GFX10-NEXT: v_mov_b32_e32 v1, 0
364 ; GISEL-GFX10-NEXT: s_waitcnt lgkmcnt(0)
365 ; GISEL-GFX10-NEXT: v_cmp_ge_u32_e64 s2, 0x64, s2
366 ; GISEL-GFX10-NEXT: v_mov_b32_e32 v0, s2
367 ; GISEL-GFX10-NEXT: global_store_dword v1, v0, s[0:1]
368 ; GISEL-GFX10-NEXT: s_endpgm
369 %result = call i32 @llvm.amdgcn.icmp.i32(i32 %src, i32 100, i32 37)
370 store i32 %result, ptr addrspace(1) %out
374 define amdgpu_kernel void @v_icmp_i32_sgt(ptr addrspace(1) %out, i32 %src) #1 {
375 ; SDAG-GFX11-LABEL: v_icmp_i32_sgt:
376 ; SDAG-GFX11: ; %bb.0:
377 ; SDAG-GFX11-NEXT: s_clause 0x1
378 ; SDAG-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c
379 ; SDAG-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x24
380 ; SDAG-GFX11-NEXT: s_waitcnt lgkmcnt(0)
381 ; SDAG-GFX11-NEXT: v_cmp_lt_i32_e64 s2, 0x64, s2
382 ; SDAG-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)
383 ; SDAG-GFX11-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
384 ; SDAG-GFX11-NEXT: global_store_b32 v0, v1, s[0:1]
385 ; SDAG-GFX11-NEXT: s_endpgm
387 ; SDAG-GFX10-LABEL: v_icmp_i32_sgt:
388 ; SDAG-GFX10: ; %bb.0:
389 ; SDAG-GFX10-NEXT: s_clause 0x1
390 ; SDAG-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c
391 ; SDAG-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24
392 ; SDAG-GFX10-NEXT: v_mov_b32_e32 v0, 0
393 ; SDAG-GFX10-NEXT: s_waitcnt lgkmcnt(0)
394 ; SDAG-GFX10-NEXT: v_cmp_lt_i32_e64 s2, 0x64, s2
395 ; SDAG-GFX10-NEXT: v_mov_b32_e32 v1, s2
396 ; SDAG-GFX10-NEXT: global_store_dword v0, v1, s[0:1]
397 ; SDAG-GFX10-NEXT: s_endpgm
399 ; GISEL-GFX11-LABEL: v_icmp_i32_sgt:
400 ; GISEL-GFX11: ; %bb.0:
401 ; GISEL-GFX11-NEXT: s_clause 0x1
402 ; GISEL-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c
403 ; GISEL-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x24
404 ; GISEL-GFX11-NEXT: v_mov_b32_e32 v1, 0
405 ; GISEL-GFX11-NEXT: s_waitcnt lgkmcnt(0)
406 ; GISEL-GFX11-NEXT: v_cmp_lt_i32_e64 s2, 0x64, s2
407 ; GISEL-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)
408 ; GISEL-GFX11-NEXT: v_mov_b32_e32 v0, s2
409 ; GISEL-GFX11-NEXT: global_store_b32 v1, v0, s[0:1]
410 ; GISEL-GFX11-NEXT: s_endpgm
412 ; GISEL-GFX10-LABEL: v_icmp_i32_sgt:
413 ; GISEL-GFX10: ; %bb.0:
414 ; GISEL-GFX10-NEXT: s_clause 0x1
415 ; GISEL-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c
416 ; GISEL-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24
417 ; GISEL-GFX10-NEXT: v_mov_b32_e32 v1, 0
418 ; GISEL-GFX10-NEXT: s_waitcnt lgkmcnt(0)
419 ; GISEL-GFX10-NEXT: v_cmp_lt_i32_e64 s2, 0x64, s2
420 ; GISEL-GFX10-NEXT: v_mov_b32_e32 v0, s2
421 ; GISEL-GFX10-NEXT: global_store_dword v1, v0, s[0:1]
422 ; GISEL-GFX10-NEXT: s_endpgm
423 %result = call i32 @llvm.amdgcn.icmp.i32(i32 %src, i32 100, i32 38)
424 store i32 %result, ptr addrspace(1) %out
428 define amdgpu_kernel void @v_icmp_i32_sge(ptr addrspace(1) %out, i32 %src) {
429 ; SDAG-GFX11-LABEL: v_icmp_i32_sge:
430 ; SDAG-GFX11: ; %bb.0:
431 ; SDAG-GFX11-NEXT: s_clause 0x1
432 ; SDAG-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c
433 ; SDAG-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x24
434 ; SDAG-GFX11-NEXT: s_waitcnt lgkmcnt(0)
435 ; SDAG-GFX11-NEXT: v_cmp_le_i32_e64 s2, 0x64, s2
436 ; SDAG-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)
437 ; SDAG-GFX11-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
438 ; SDAG-GFX11-NEXT: global_store_b32 v0, v1, s[0:1]
439 ; SDAG-GFX11-NEXT: s_endpgm
441 ; SDAG-GFX10-LABEL: v_icmp_i32_sge:
442 ; SDAG-GFX10: ; %bb.0:
443 ; SDAG-GFX10-NEXT: s_clause 0x1
444 ; SDAG-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c
445 ; SDAG-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24
446 ; SDAG-GFX10-NEXT: v_mov_b32_e32 v0, 0
447 ; SDAG-GFX10-NEXT: s_waitcnt lgkmcnt(0)
448 ; SDAG-GFX10-NEXT: v_cmp_le_i32_e64 s2, 0x64, s2
449 ; SDAG-GFX10-NEXT: v_mov_b32_e32 v1, s2
450 ; SDAG-GFX10-NEXT: global_store_dword v0, v1, s[0:1]
451 ; SDAG-GFX10-NEXT: s_endpgm
453 ; GISEL-GFX11-LABEL: v_icmp_i32_sge:
454 ; GISEL-GFX11: ; %bb.0:
455 ; GISEL-GFX11-NEXT: s_clause 0x1
456 ; GISEL-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c
457 ; GISEL-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x24
458 ; GISEL-GFX11-NEXT: v_mov_b32_e32 v1, 0
459 ; GISEL-GFX11-NEXT: s_waitcnt lgkmcnt(0)
460 ; GISEL-GFX11-NEXT: v_cmp_le_i32_e64 s2, 0x64, s2
461 ; GISEL-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)
462 ; GISEL-GFX11-NEXT: v_mov_b32_e32 v0, s2
463 ; GISEL-GFX11-NEXT: global_store_b32 v1, v0, s[0:1]
464 ; GISEL-GFX11-NEXT: s_endpgm
466 ; GISEL-GFX10-LABEL: v_icmp_i32_sge:
467 ; GISEL-GFX10: ; %bb.0:
468 ; GISEL-GFX10-NEXT: s_clause 0x1
469 ; GISEL-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c
470 ; GISEL-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24
471 ; GISEL-GFX10-NEXT: v_mov_b32_e32 v1, 0
472 ; GISEL-GFX10-NEXT: s_waitcnt lgkmcnt(0)
473 ; GISEL-GFX10-NEXT: v_cmp_le_i32_e64 s2, 0x64, s2
474 ; GISEL-GFX10-NEXT: v_mov_b32_e32 v0, s2
475 ; GISEL-GFX10-NEXT: global_store_dword v1, v0, s[0:1]
476 ; GISEL-GFX10-NEXT: s_endpgm
477 %result = call i32 @llvm.amdgcn.icmp.i32(i32 %src, i32 100, i32 39)
478 store i32 %result, ptr addrspace(1) %out
482 define amdgpu_kernel void @v_icmp_i32_slt(ptr addrspace(1) %out, i32 %src) {
483 ; SDAG-GFX11-LABEL: v_icmp_i32_slt:
484 ; SDAG-GFX11: ; %bb.0:
485 ; SDAG-GFX11-NEXT: s_clause 0x1
486 ; SDAG-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c
487 ; SDAG-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x24
488 ; SDAG-GFX11-NEXT: s_waitcnt lgkmcnt(0)
489 ; SDAG-GFX11-NEXT: v_cmp_gt_i32_e64 s2, 0x64, s2
490 ; SDAG-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)
491 ; SDAG-GFX11-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
492 ; SDAG-GFX11-NEXT: global_store_b32 v0, v1, s[0:1]
493 ; SDAG-GFX11-NEXT: s_endpgm
495 ; SDAG-GFX10-LABEL: v_icmp_i32_slt:
496 ; SDAG-GFX10: ; %bb.0:
497 ; SDAG-GFX10-NEXT: s_clause 0x1
498 ; SDAG-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c
499 ; SDAG-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24
500 ; SDAG-GFX10-NEXT: v_mov_b32_e32 v0, 0
501 ; SDAG-GFX10-NEXT: s_waitcnt lgkmcnt(0)
502 ; SDAG-GFX10-NEXT: v_cmp_gt_i32_e64 s2, 0x64, s2
503 ; SDAG-GFX10-NEXT: v_mov_b32_e32 v1, s2
504 ; SDAG-GFX10-NEXT: global_store_dword v0, v1, s[0:1]
505 ; SDAG-GFX10-NEXT: s_endpgm
507 ; GISEL-GFX11-LABEL: v_icmp_i32_slt:
508 ; GISEL-GFX11: ; %bb.0:
509 ; GISEL-GFX11-NEXT: s_clause 0x1
510 ; GISEL-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c
511 ; GISEL-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x24
512 ; GISEL-GFX11-NEXT: v_mov_b32_e32 v1, 0
513 ; GISEL-GFX11-NEXT: s_waitcnt lgkmcnt(0)
514 ; GISEL-GFX11-NEXT: v_cmp_gt_i32_e64 s2, 0x64, s2
515 ; GISEL-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)
516 ; GISEL-GFX11-NEXT: v_mov_b32_e32 v0, s2
517 ; GISEL-GFX11-NEXT: global_store_b32 v1, v0, s[0:1]
518 ; GISEL-GFX11-NEXT: s_endpgm
520 ; GISEL-GFX10-LABEL: v_icmp_i32_slt:
521 ; GISEL-GFX10: ; %bb.0:
522 ; GISEL-GFX10-NEXT: s_clause 0x1
523 ; GISEL-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c
524 ; GISEL-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24
525 ; GISEL-GFX10-NEXT: v_mov_b32_e32 v1, 0
526 ; GISEL-GFX10-NEXT: s_waitcnt lgkmcnt(0)
527 ; GISEL-GFX10-NEXT: v_cmp_gt_i32_e64 s2, 0x64, s2
528 ; GISEL-GFX10-NEXT: v_mov_b32_e32 v0, s2
529 ; GISEL-GFX10-NEXT: global_store_dword v1, v0, s[0:1]
530 ; GISEL-GFX10-NEXT: s_endpgm
531 %result = call i32 @llvm.amdgcn.icmp.i32(i32 %src, i32 100, i32 40)
532 store i32 %result, ptr addrspace(1) %out
536 define amdgpu_kernel void @v_icmp_i32_sle(ptr addrspace(1) %out, i32 %src) {
537 ; SDAG-GFX11-LABEL: v_icmp_i32_sle:
538 ; SDAG-GFX11: ; %bb.0:
539 ; SDAG-GFX11-NEXT: s_clause 0x1
540 ; SDAG-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c
541 ; SDAG-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x24
542 ; SDAG-GFX11-NEXT: s_waitcnt lgkmcnt(0)
543 ; SDAG-GFX11-NEXT: v_cmp_ge_i32_e64 s2, 0x64, s2
544 ; SDAG-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)
545 ; SDAG-GFX11-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
546 ; SDAG-GFX11-NEXT: global_store_b32 v0, v1, s[0:1]
547 ; SDAG-GFX11-NEXT: s_endpgm
549 ; SDAG-GFX10-LABEL: v_icmp_i32_sle:
550 ; SDAG-GFX10: ; %bb.0:
551 ; SDAG-GFX10-NEXT: s_clause 0x1
552 ; SDAG-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c
553 ; SDAG-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24
554 ; SDAG-GFX10-NEXT: v_mov_b32_e32 v0, 0
555 ; SDAG-GFX10-NEXT: s_waitcnt lgkmcnt(0)
556 ; SDAG-GFX10-NEXT: v_cmp_ge_i32_e64 s2, 0x64, s2
557 ; SDAG-GFX10-NEXT: v_mov_b32_e32 v1, s2
558 ; SDAG-GFX10-NEXT: global_store_dword v0, v1, s[0:1]
559 ; SDAG-GFX10-NEXT: s_endpgm
561 ; GISEL-GFX11-LABEL: v_icmp_i32_sle:
562 ; GISEL-GFX11: ; %bb.0:
563 ; GISEL-GFX11-NEXT: s_clause 0x1
564 ; GISEL-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c
565 ; GISEL-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x24
566 ; GISEL-GFX11-NEXT: v_mov_b32_e32 v1, 0
567 ; GISEL-GFX11-NEXT: s_waitcnt lgkmcnt(0)
568 ; GISEL-GFX11-NEXT: v_cmp_ge_i32_e64 s2, 0x64, s2
569 ; GISEL-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)
570 ; GISEL-GFX11-NEXT: v_mov_b32_e32 v0, s2
571 ; GISEL-GFX11-NEXT: global_store_b32 v1, v0, s[0:1]
572 ; GISEL-GFX11-NEXT: s_endpgm
574 ; GISEL-GFX10-LABEL: v_icmp_i32_sle:
575 ; GISEL-GFX10: ; %bb.0:
576 ; GISEL-GFX10-NEXT: s_clause 0x1
577 ; GISEL-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c
578 ; GISEL-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24
579 ; GISEL-GFX10-NEXT: v_mov_b32_e32 v1, 0
580 ; GISEL-GFX10-NEXT: s_waitcnt lgkmcnt(0)
581 ; GISEL-GFX10-NEXT: v_cmp_ge_i32_e64 s2, 0x64, s2
582 ; GISEL-GFX10-NEXT: v_mov_b32_e32 v0, s2
583 ; GISEL-GFX10-NEXT: global_store_dword v1, v0, s[0:1]
584 ; GISEL-GFX10-NEXT: s_endpgm
585 %result = call i32 @llvm.amdgcn.icmp.i32(i32 %src, i32 100, i32 41)
586 store i32 %result, ptr addrspace(1) %out
590 define amdgpu_kernel void @v_icmp_i64_eq(ptr addrspace(1) %out, i64 %src) {
591 ; SDAG-GFX11-LABEL: v_icmp_i64_eq:
592 ; SDAG-GFX11: ; %bb.0:
593 ; SDAG-GFX11-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
594 ; SDAG-GFX11-NEXT: s_waitcnt lgkmcnt(0)
595 ; SDAG-GFX11-NEXT: v_cmp_eq_u64_e64 s2, 0x64, s[2:3]
596 ; SDAG-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)
597 ; SDAG-GFX11-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
598 ; SDAG-GFX11-NEXT: global_store_b32 v0, v1, s[0:1]
599 ; SDAG-GFX11-NEXT: s_endpgm
601 ; SDAG-GFX10-LABEL: v_icmp_i64_eq:
602 ; SDAG-GFX10: ; %bb.0:
603 ; SDAG-GFX10-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24
604 ; SDAG-GFX10-NEXT: v_mov_b32_e32 v0, 0
605 ; SDAG-GFX10-NEXT: s_waitcnt lgkmcnt(0)
606 ; SDAG-GFX10-NEXT: v_cmp_eq_u64_e64 s2, 0x64, s[2:3]
607 ; SDAG-GFX10-NEXT: v_mov_b32_e32 v1, s2
608 ; SDAG-GFX10-NEXT: global_store_dword v0, v1, s[0:1]
609 ; SDAG-GFX10-NEXT: s_endpgm
611 ; GISEL-GFX11-LABEL: v_icmp_i64_eq:
612 ; GISEL-GFX11: ; %bb.0:
613 ; GISEL-GFX11-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
614 ; GISEL-GFX11-NEXT: v_mov_b32_e32 v1, 0
615 ; GISEL-GFX11-NEXT: s_waitcnt lgkmcnt(0)
616 ; GISEL-GFX11-NEXT: v_cmp_eq_u64_e64 s2, 0x64, s[2:3]
617 ; GISEL-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)
618 ; GISEL-GFX11-NEXT: v_mov_b32_e32 v0, s2
619 ; GISEL-GFX11-NEXT: global_store_b32 v1, v0, s[0:1]
620 ; GISEL-GFX11-NEXT: s_endpgm
622 ; GISEL-GFX10-LABEL: v_icmp_i64_eq:
623 ; GISEL-GFX10: ; %bb.0:
624 ; GISEL-GFX10-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24
625 ; GISEL-GFX10-NEXT: v_mov_b32_e32 v1, 0
626 ; GISEL-GFX10-NEXT: s_waitcnt lgkmcnt(0)
627 ; GISEL-GFX10-NEXT: v_cmp_eq_u64_e64 s2, 0x64, s[2:3]
628 ; GISEL-GFX10-NEXT: v_mov_b32_e32 v0, s2
629 ; GISEL-GFX10-NEXT: global_store_dword v1, v0, s[0:1]
630 ; GISEL-GFX10-NEXT: s_endpgm
631 %result = call i32 @llvm.amdgcn.icmp.i64(i64 %src, i64 100, i32 32)
632 store i32 %result, ptr addrspace(1) %out
636 define amdgpu_kernel void @v_icmp_i64_ne(ptr addrspace(1) %out, i64 %src) {
637 ; SDAG-GFX11-LABEL: v_icmp_i64_ne:
638 ; SDAG-GFX11: ; %bb.0:
639 ; SDAG-GFX11-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
640 ; SDAG-GFX11-NEXT: s_waitcnt lgkmcnt(0)
641 ; SDAG-GFX11-NEXT: v_cmp_ne_u64_e64 s2, 0x64, s[2:3]
642 ; SDAG-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)
643 ; SDAG-GFX11-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
644 ; SDAG-GFX11-NEXT: global_store_b32 v0, v1, s[0:1]
645 ; SDAG-GFX11-NEXT: s_endpgm
647 ; SDAG-GFX10-LABEL: v_icmp_i64_ne:
648 ; SDAG-GFX10: ; %bb.0:
649 ; SDAG-GFX10-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24
650 ; SDAG-GFX10-NEXT: v_mov_b32_e32 v0, 0
651 ; SDAG-GFX10-NEXT: s_waitcnt lgkmcnt(0)
652 ; SDAG-GFX10-NEXT: v_cmp_ne_u64_e64 s2, 0x64, s[2:3]
653 ; SDAG-GFX10-NEXT: v_mov_b32_e32 v1, s2
654 ; SDAG-GFX10-NEXT: global_store_dword v0, v1, s[0:1]
655 ; SDAG-GFX10-NEXT: s_endpgm
657 ; GISEL-GFX11-LABEL: v_icmp_i64_ne:
658 ; GISEL-GFX11: ; %bb.0:
659 ; GISEL-GFX11-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
660 ; GISEL-GFX11-NEXT: v_mov_b32_e32 v1, 0
661 ; GISEL-GFX11-NEXT: s_waitcnt lgkmcnt(0)
662 ; GISEL-GFX11-NEXT: v_cmp_ne_u64_e64 s2, 0x64, s[2:3]
663 ; GISEL-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)
664 ; GISEL-GFX11-NEXT: v_mov_b32_e32 v0, s2
665 ; GISEL-GFX11-NEXT: global_store_b32 v1, v0, s[0:1]
666 ; GISEL-GFX11-NEXT: s_endpgm
668 ; GISEL-GFX10-LABEL: v_icmp_i64_ne:
669 ; GISEL-GFX10: ; %bb.0:
670 ; GISEL-GFX10-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24
671 ; GISEL-GFX10-NEXT: v_mov_b32_e32 v1, 0
672 ; GISEL-GFX10-NEXT: s_waitcnt lgkmcnt(0)
673 ; GISEL-GFX10-NEXT: v_cmp_ne_u64_e64 s2, 0x64, s[2:3]
674 ; GISEL-GFX10-NEXT: v_mov_b32_e32 v0, s2
675 ; GISEL-GFX10-NEXT: global_store_dword v1, v0, s[0:1]
676 ; GISEL-GFX10-NEXT: s_endpgm
677 %result = call i32 @llvm.amdgcn.icmp.i64(i64 %src, i64 100, i32 33)
678 store i32 %result, ptr addrspace(1) %out
682 define amdgpu_kernel void @v_icmp_u64_ugt(ptr addrspace(1) %out, i64 %src) {
683 ; SDAG-GFX11-LABEL: v_icmp_u64_ugt:
684 ; SDAG-GFX11: ; %bb.0:
685 ; SDAG-GFX11-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
686 ; SDAG-GFX11-NEXT: s_waitcnt lgkmcnt(0)
687 ; SDAG-GFX11-NEXT: v_cmp_lt_u64_e64 s2, 0x64, s[2:3]
688 ; SDAG-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)
689 ; SDAG-GFX11-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
690 ; SDAG-GFX11-NEXT: global_store_b32 v0, v1, s[0:1]
691 ; SDAG-GFX11-NEXT: s_endpgm
693 ; SDAG-GFX10-LABEL: v_icmp_u64_ugt:
694 ; SDAG-GFX10: ; %bb.0:
695 ; SDAG-GFX10-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24
696 ; SDAG-GFX10-NEXT: v_mov_b32_e32 v0, 0
697 ; SDAG-GFX10-NEXT: s_waitcnt lgkmcnt(0)
698 ; SDAG-GFX10-NEXT: v_cmp_lt_u64_e64 s2, 0x64, s[2:3]
699 ; SDAG-GFX10-NEXT: v_mov_b32_e32 v1, s2
700 ; SDAG-GFX10-NEXT: global_store_dword v0, v1, s[0:1]
701 ; SDAG-GFX10-NEXT: s_endpgm
703 ; GISEL-GFX11-LABEL: v_icmp_u64_ugt:
704 ; GISEL-GFX11: ; %bb.0:
705 ; GISEL-GFX11-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
706 ; GISEL-GFX11-NEXT: v_mov_b32_e32 v1, 0
707 ; GISEL-GFX11-NEXT: s_waitcnt lgkmcnt(0)
708 ; GISEL-GFX11-NEXT: v_cmp_lt_u64_e64 s2, 0x64, s[2:3]
709 ; GISEL-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)
710 ; GISEL-GFX11-NEXT: v_mov_b32_e32 v0, s2
711 ; GISEL-GFX11-NEXT: global_store_b32 v1, v0, s[0:1]
712 ; GISEL-GFX11-NEXT: s_endpgm
714 ; GISEL-GFX10-LABEL: v_icmp_u64_ugt:
715 ; GISEL-GFX10: ; %bb.0:
716 ; GISEL-GFX10-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24
717 ; GISEL-GFX10-NEXT: v_mov_b32_e32 v1, 0
718 ; GISEL-GFX10-NEXT: s_waitcnt lgkmcnt(0)
719 ; GISEL-GFX10-NEXT: v_cmp_lt_u64_e64 s2, 0x64, s[2:3]
720 ; GISEL-GFX10-NEXT: v_mov_b32_e32 v0, s2
721 ; GISEL-GFX10-NEXT: global_store_dword v1, v0, s[0:1]
722 ; GISEL-GFX10-NEXT: s_endpgm
723 %result = call i32 @llvm.amdgcn.icmp.i64(i64 %src, i64 100, i32 34)
724 store i32 %result, ptr addrspace(1) %out
728 define amdgpu_kernel void @v_icmp_u64_uge(ptr addrspace(1) %out, i64 %src) {
729 ; SDAG-GFX11-LABEL: v_icmp_u64_uge:
730 ; SDAG-GFX11: ; %bb.0:
731 ; SDAG-GFX11-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
732 ; SDAG-GFX11-NEXT: s_waitcnt lgkmcnt(0)
733 ; SDAG-GFX11-NEXT: v_cmp_le_u64_e64 s2, 0x64, s[2:3]
734 ; SDAG-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)
735 ; SDAG-GFX11-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
736 ; SDAG-GFX11-NEXT: global_store_b32 v0, v1, s[0:1]
737 ; SDAG-GFX11-NEXT: s_endpgm
739 ; SDAG-GFX10-LABEL: v_icmp_u64_uge:
740 ; SDAG-GFX10: ; %bb.0:
741 ; SDAG-GFX10-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24
742 ; SDAG-GFX10-NEXT: v_mov_b32_e32 v0, 0
743 ; SDAG-GFX10-NEXT: s_waitcnt lgkmcnt(0)
744 ; SDAG-GFX10-NEXT: v_cmp_le_u64_e64 s2, 0x64, s[2:3]
745 ; SDAG-GFX10-NEXT: v_mov_b32_e32 v1, s2
746 ; SDAG-GFX10-NEXT: global_store_dword v0, v1, s[0:1]
747 ; SDAG-GFX10-NEXT: s_endpgm
749 ; GISEL-GFX11-LABEL: v_icmp_u64_uge:
750 ; GISEL-GFX11: ; %bb.0:
751 ; GISEL-GFX11-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
752 ; GISEL-GFX11-NEXT: v_mov_b32_e32 v1, 0
753 ; GISEL-GFX11-NEXT: s_waitcnt lgkmcnt(0)
754 ; GISEL-GFX11-NEXT: v_cmp_le_u64_e64 s2, 0x64, s[2:3]
755 ; GISEL-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)
756 ; GISEL-GFX11-NEXT: v_mov_b32_e32 v0, s2
757 ; GISEL-GFX11-NEXT: global_store_b32 v1, v0, s[0:1]
758 ; GISEL-GFX11-NEXT: s_endpgm
760 ; GISEL-GFX10-LABEL: v_icmp_u64_uge:
761 ; GISEL-GFX10: ; %bb.0:
762 ; GISEL-GFX10-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24
763 ; GISEL-GFX10-NEXT: v_mov_b32_e32 v1, 0
764 ; GISEL-GFX10-NEXT: s_waitcnt lgkmcnt(0)
765 ; GISEL-GFX10-NEXT: v_cmp_le_u64_e64 s2, 0x64, s[2:3]
766 ; GISEL-GFX10-NEXT: v_mov_b32_e32 v0, s2
767 ; GISEL-GFX10-NEXT: global_store_dword v1, v0, s[0:1]
768 ; GISEL-GFX10-NEXT: s_endpgm
769 %result = call i32 @llvm.amdgcn.icmp.i64(i64 %src, i64 100, i32 35)
770 store i32 %result, ptr addrspace(1) %out
774 define amdgpu_kernel void @v_icmp_u64_ult(ptr addrspace(1) %out, i64 %src) {
775 ; SDAG-GFX11-LABEL: v_icmp_u64_ult:
776 ; SDAG-GFX11: ; %bb.0:
777 ; SDAG-GFX11-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
778 ; SDAG-GFX11-NEXT: s_waitcnt lgkmcnt(0)
779 ; SDAG-GFX11-NEXT: v_cmp_gt_u64_e64 s2, 0x64, s[2:3]
780 ; SDAG-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)
781 ; SDAG-GFX11-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
782 ; SDAG-GFX11-NEXT: global_store_b32 v0, v1, s[0:1]
783 ; SDAG-GFX11-NEXT: s_endpgm
785 ; SDAG-GFX10-LABEL: v_icmp_u64_ult:
786 ; SDAG-GFX10: ; %bb.0:
787 ; SDAG-GFX10-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24
788 ; SDAG-GFX10-NEXT: v_mov_b32_e32 v0, 0
789 ; SDAG-GFX10-NEXT: s_waitcnt lgkmcnt(0)
790 ; SDAG-GFX10-NEXT: v_cmp_gt_u64_e64 s2, 0x64, s[2:3]
791 ; SDAG-GFX10-NEXT: v_mov_b32_e32 v1, s2
792 ; SDAG-GFX10-NEXT: global_store_dword v0, v1, s[0:1]
793 ; SDAG-GFX10-NEXT: s_endpgm
795 ; GISEL-GFX11-LABEL: v_icmp_u64_ult:
796 ; GISEL-GFX11: ; %bb.0:
797 ; GISEL-GFX11-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
798 ; GISEL-GFX11-NEXT: v_mov_b32_e32 v1, 0
799 ; GISEL-GFX11-NEXT: s_waitcnt lgkmcnt(0)
800 ; GISEL-GFX11-NEXT: v_cmp_gt_u64_e64 s2, 0x64, s[2:3]
801 ; GISEL-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)
802 ; GISEL-GFX11-NEXT: v_mov_b32_e32 v0, s2
803 ; GISEL-GFX11-NEXT: global_store_b32 v1, v0, s[0:1]
804 ; GISEL-GFX11-NEXT: s_endpgm
806 ; GISEL-GFX10-LABEL: v_icmp_u64_ult:
807 ; GISEL-GFX10: ; %bb.0:
808 ; GISEL-GFX10-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24
809 ; GISEL-GFX10-NEXT: v_mov_b32_e32 v1, 0
810 ; GISEL-GFX10-NEXT: s_waitcnt lgkmcnt(0)
811 ; GISEL-GFX10-NEXT: v_cmp_gt_u64_e64 s2, 0x64, s[2:3]
812 ; GISEL-GFX10-NEXT: v_mov_b32_e32 v0, s2
813 ; GISEL-GFX10-NEXT: global_store_dword v1, v0, s[0:1]
814 ; GISEL-GFX10-NEXT: s_endpgm
815 %result = call i32 @llvm.amdgcn.icmp.i64(i64 %src, i64 100, i32 36)
816 store i32 %result, ptr addrspace(1) %out
820 define amdgpu_kernel void @v_icmp_u64_ule(ptr addrspace(1) %out, i64 %src) {
821 ; SDAG-GFX11-LABEL: v_icmp_u64_ule:
822 ; SDAG-GFX11: ; %bb.0:
823 ; SDAG-GFX11-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
824 ; SDAG-GFX11-NEXT: s_waitcnt lgkmcnt(0)
825 ; SDAG-GFX11-NEXT: v_cmp_ge_u64_e64 s2, 0x64, s[2:3]
826 ; SDAG-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)
827 ; SDAG-GFX11-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
828 ; SDAG-GFX11-NEXT: global_store_b32 v0, v1, s[0:1]
829 ; SDAG-GFX11-NEXT: s_endpgm
831 ; SDAG-GFX10-LABEL: v_icmp_u64_ule:
832 ; SDAG-GFX10: ; %bb.0:
833 ; SDAG-GFX10-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24
834 ; SDAG-GFX10-NEXT: v_mov_b32_e32 v0, 0
835 ; SDAG-GFX10-NEXT: s_waitcnt lgkmcnt(0)
836 ; SDAG-GFX10-NEXT: v_cmp_ge_u64_e64 s2, 0x64, s[2:3]
837 ; SDAG-GFX10-NEXT: v_mov_b32_e32 v1, s2
838 ; SDAG-GFX10-NEXT: global_store_dword v0, v1, s[0:1]
839 ; SDAG-GFX10-NEXT: s_endpgm
841 ; GISEL-GFX11-LABEL: v_icmp_u64_ule:
842 ; GISEL-GFX11: ; %bb.0:
843 ; GISEL-GFX11-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
844 ; GISEL-GFX11-NEXT: v_mov_b32_e32 v1, 0
845 ; GISEL-GFX11-NEXT: s_waitcnt lgkmcnt(0)
846 ; GISEL-GFX11-NEXT: v_cmp_ge_u64_e64 s2, 0x64, s[2:3]
847 ; GISEL-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)
848 ; GISEL-GFX11-NEXT: v_mov_b32_e32 v0, s2
849 ; GISEL-GFX11-NEXT: global_store_b32 v1, v0, s[0:1]
850 ; GISEL-GFX11-NEXT: s_endpgm
852 ; GISEL-GFX10-LABEL: v_icmp_u64_ule:
853 ; GISEL-GFX10: ; %bb.0:
854 ; GISEL-GFX10-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24
855 ; GISEL-GFX10-NEXT: v_mov_b32_e32 v1, 0
856 ; GISEL-GFX10-NEXT: s_waitcnt lgkmcnt(0)
857 ; GISEL-GFX10-NEXT: v_cmp_ge_u64_e64 s2, 0x64, s[2:3]
858 ; GISEL-GFX10-NEXT: v_mov_b32_e32 v0, s2
859 ; GISEL-GFX10-NEXT: global_store_dword v1, v0, s[0:1]
860 ; GISEL-GFX10-NEXT: s_endpgm
861 %result = call i32 @llvm.amdgcn.icmp.i64(i64 %src, i64 100, i32 37)
862 store i32 %result, ptr addrspace(1) %out
866 define amdgpu_kernel void @v_icmp_i64_sgt(ptr addrspace(1) %out, i64 %src) {
867 ; SDAG-GFX11-LABEL: v_icmp_i64_sgt:
868 ; SDAG-GFX11: ; %bb.0:
869 ; SDAG-GFX11-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
870 ; SDAG-GFX11-NEXT: s_waitcnt lgkmcnt(0)
871 ; SDAG-GFX11-NEXT: v_cmp_lt_i64_e64 s2, 0x64, s[2:3]
872 ; SDAG-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)
873 ; SDAG-GFX11-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
874 ; SDAG-GFX11-NEXT: global_store_b32 v0, v1, s[0:1]
875 ; SDAG-GFX11-NEXT: s_endpgm
877 ; SDAG-GFX10-LABEL: v_icmp_i64_sgt:
878 ; SDAG-GFX10: ; %bb.0:
879 ; SDAG-GFX10-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24
880 ; SDAG-GFX10-NEXT: v_mov_b32_e32 v0, 0
881 ; SDAG-GFX10-NEXT: s_waitcnt lgkmcnt(0)
882 ; SDAG-GFX10-NEXT: v_cmp_lt_i64_e64 s2, 0x64, s[2:3]
883 ; SDAG-GFX10-NEXT: v_mov_b32_e32 v1, s2
884 ; SDAG-GFX10-NEXT: global_store_dword v0, v1, s[0:1]
885 ; SDAG-GFX10-NEXT: s_endpgm
887 ; GISEL-GFX11-LABEL: v_icmp_i64_sgt:
888 ; GISEL-GFX11: ; %bb.0:
889 ; GISEL-GFX11-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
890 ; GISEL-GFX11-NEXT: v_mov_b32_e32 v1, 0
891 ; GISEL-GFX11-NEXT: s_waitcnt lgkmcnt(0)
892 ; GISEL-GFX11-NEXT: v_cmp_lt_i64_e64 s2, 0x64, s[2:3]
893 ; GISEL-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)
894 ; GISEL-GFX11-NEXT: v_mov_b32_e32 v0, s2
895 ; GISEL-GFX11-NEXT: global_store_b32 v1, v0, s[0:1]
896 ; GISEL-GFX11-NEXT: s_endpgm
898 ; GISEL-GFX10-LABEL: v_icmp_i64_sgt:
899 ; GISEL-GFX10: ; %bb.0:
900 ; GISEL-GFX10-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24
901 ; GISEL-GFX10-NEXT: v_mov_b32_e32 v1, 0
902 ; GISEL-GFX10-NEXT: s_waitcnt lgkmcnt(0)
903 ; GISEL-GFX10-NEXT: v_cmp_lt_i64_e64 s2, 0x64, s[2:3]
904 ; GISEL-GFX10-NEXT: v_mov_b32_e32 v0, s2
905 ; GISEL-GFX10-NEXT: global_store_dword v1, v0, s[0:1]
906 ; GISEL-GFX10-NEXT: s_endpgm
907 %result = call i32 @llvm.amdgcn.icmp.i64(i64 %src, i64 100, i32 38)
908 store i32 %result, ptr addrspace(1) %out
912 define amdgpu_kernel void @v_icmp_i64_sge(ptr addrspace(1) %out, i64 %src) {
913 ; SDAG-GFX11-LABEL: v_icmp_i64_sge:
914 ; SDAG-GFX11: ; %bb.0:
915 ; SDAG-GFX11-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
916 ; SDAG-GFX11-NEXT: s_waitcnt lgkmcnt(0)
917 ; SDAG-GFX11-NEXT: v_cmp_le_i64_e64 s2, 0x64, s[2:3]
918 ; SDAG-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)
919 ; SDAG-GFX11-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
920 ; SDAG-GFX11-NEXT: global_store_b32 v0, v1, s[0:1]
921 ; SDAG-GFX11-NEXT: s_endpgm
923 ; SDAG-GFX10-LABEL: v_icmp_i64_sge:
924 ; SDAG-GFX10: ; %bb.0:
925 ; SDAG-GFX10-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24
926 ; SDAG-GFX10-NEXT: v_mov_b32_e32 v0, 0
927 ; SDAG-GFX10-NEXT: s_waitcnt lgkmcnt(0)
928 ; SDAG-GFX10-NEXT: v_cmp_le_i64_e64 s2, 0x64, s[2:3]
929 ; SDAG-GFX10-NEXT: v_mov_b32_e32 v1, s2
930 ; SDAG-GFX10-NEXT: global_store_dword v0, v1, s[0:1]
931 ; SDAG-GFX10-NEXT: s_endpgm
933 ; GISEL-GFX11-LABEL: v_icmp_i64_sge:
934 ; GISEL-GFX11: ; %bb.0:
935 ; GISEL-GFX11-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
936 ; GISEL-GFX11-NEXT: v_mov_b32_e32 v1, 0
937 ; GISEL-GFX11-NEXT: s_waitcnt lgkmcnt(0)
938 ; GISEL-GFX11-NEXT: v_cmp_le_i64_e64 s2, 0x64, s[2:3]
939 ; GISEL-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)
940 ; GISEL-GFX11-NEXT: v_mov_b32_e32 v0, s2
941 ; GISEL-GFX11-NEXT: global_store_b32 v1, v0, s[0:1]
942 ; GISEL-GFX11-NEXT: s_endpgm
944 ; GISEL-GFX10-LABEL: v_icmp_i64_sge:
945 ; GISEL-GFX10: ; %bb.0:
946 ; GISEL-GFX10-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24
947 ; GISEL-GFX10-NEXT: v_mov_b32_e32 v1, 0
948 ; GISEL-GFX10-NEXT: s_waitcnt lgkmcnt(0)
949 ; GISEL-GFX10-NEXT: v_cmp_le_i64_e64 s2, 0x64, s[2:3]
950 ; GISEL-GFX10-NEXT: v_mov_b32_e32 v0, s2
951 ; GISEL-GFX10-NEXT: global_store_dword v1, v0, s[0:1]
952 ; GISEL-GFX10-NEXT: s_endpgm
953 %result = call i32 @llvm.amdgcn.icmp.i64(i64 %src, i64 100, i32 39)
954 store i32 %result, ptr addrspace(1) %out
958 define amdgpu_kernel void @v_icmp_i64_slt(ptr addrspace(1) %out, i64 %src) {
959 ; SDAG-GFX11-LABEL: v_icmp_i64_slt:
960 ; SDAG-GFX11: ; %bb.0:
961 ; SDAG-GFX11-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
962 ; SDAG-GFX11-NEXT: s_waitcnt lgkmcnt(0)
963 ; SDAG-GFX11-NEXT: v_cmp_gt_i64_e64 s2, 0x64, s[2:3]
964 ; SDAG-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)
965 ; SDAG-GFX11-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
966 ; SDAG-GFX11-NEXT: global_store_b32 v0, v1, s[0:1]
967 ; SDAG-GFX11-NEXT: s_endpgm
969 ; SDAG-GFX10-LABEL: v_icmp_i64_slt:
970 ; SDAG-GFX10: ; %bb.0:
971 ; SDAG-GFX10-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24
972 ; SDAG-GFX10-NEXT: v_mov_b32_e32 v0, 0
973 ; SDAG-GFX10-NEXT: s_waitcnt lgkmcnt(0)
974 ; SDAG-GFX10-NEXT: v_cmp_gt_i64_e64 s2, 0x64, s[2:3]
975 ; SDAG-GFX10-NEXT: v_mov_b32_e32 v1, s2
976 ; SDAG-GFX10-NEXT: global_store_dword v0, v1, s[0:1]
977 ; SDAG-GFX10-NEXT: s_endpgm
979 ; GISEL-GFX11-LABEL: v_icmp_i64_slt:
980 ; GISEL-GFX11: ; %bb.0:
981 ; GISEL-GFX11-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
982 ; GISEL-GFX11-NEXT: v_mov_b32_e32 v1, 0
983 ; GISEL-GFX11-NEXT: s_waitcnt lgkmcnt(0)
984 ; GISEL-GFX11-NEXT: v_cmp_gt_i64_e64 s2, 0x64, s[2:3]
985 ; GISEL-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)
986 ; GISEL-GFX11-NEXT: v_mov_b32_e32 v0, s2
987 ; GISEL-GFX11-NEXT: global_store_b32 v1, v0, s[0:1]
988 ; GISEL-GFX11-NEXT: s_endpgm
990 ; GISEL-GFX10-LABEL: v_icmp_i64_slt:
991 ; GISEL-GFX10: ; %bb.0:
992 ; GISEL-GFX10-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24
993 ; GISEL-GFX10-NEXT: v_mov_b32_e32 v1, 0
994 ; GISEL-GFX10-NEXT: s_waitcnt lgkmcnt(0)
995 ; GISEL-GFX10-NEXT: v_cmp_gt_i64_e64 s2, 0x64, s[2:3]
996 ; GISEL-GFX10-NEXT: v_mov_b32_e32 v0, s2
997 ; GISEL-GFX10-NEXT: global_store_dword v1, v0, s[0:1]
998 ; GISEL-GFX10-NEXT: s_endpgm
999 %result = call i32 @llvm.amdgcn.icmp.i64(i64 %src, i64 100, i32 40)
1000 store i32 %result, ptr addrspace(1) %out
1004 define amdgpu_kernel void @v_icmp_i64_sle(ptr addrspace(1) %out, i64 %src) {
1005 ; SDAG-GFX11-LABEL: v_icmp_i64_sle:
1006 ; SDAG-GFX11: ; %bb.0:
1007 ; SDAG-GFX11-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
1008 ; SDAG-GFX11-NEXT: s_waitcnt lgkmcnt(0)
1009 ; SDAG-GFX11-NEXT: v_cmp_ge_i64_e64 s2, 0x64, s[2:3]
1010 ; SDAG-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)
1011 ; SDAG-GFX11-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
1012 ; SDAG-GFX11-NEXT: global_store_b32 v0, v1, s[0:1]
1013 ; SDAG-GFX11-NEXT: s_endpgm
1015 ; SDAG-GFX10-LABEL: v_icmp_i64_sle:
1016 ; SDAG-GFX10: ; %bb.0:
1017 ; SDAG-GFX10-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24
1018 ; SDAG-GFX10-NEXT: v_mov_b32_e32 v0, 0
1019 ; SDAG-GFX10-NEXT: s_waitcnt lgkmcnt(0)
1020 ; SDAG-GFX10-NEXT: v_cmp_ge_i64_e64 s2, 0x64, s[2:3]
1021 ; SDAG-GFX10-NEXT: v_mov_b32_e32 v1, s2
1022 ; SDAG-GFX10-NEXT: global_store_dword v0, v1, s[0:1]
1023 ; SDAG-GFX10-NEXT: s_endpgm
1025 ; GISEL-GFX11-LABEL: v_icmp_i64_sle:
1026 ; GISEL-GFX11: ; %bb.0:
1027 ; GISEL-GFX11-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
1028 ; GISEL-GFX11-NEXT: v_mov_b32_e32 v1, 0
1029 ; GISEL-GFX11-NEXT: s_waitcnt lgkmcnt(0)
1030 ; GISEL-GFX11-NEXT: v_cmp_ge_i64_e64 s2, 0x64, s[2:3]
1031 ; GISEL-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)
1032 ; GISEL-GFX11-NEXT: v_mov_b32_e32 v0, s2
1033 ; GISEL-GFX11-NEXT: global_store_b32 v1, v0, s[0:1]
1034 ; GISEL-GFX11-NEXT: s_endpgm
1036 ; GISEL-GFX10-LABEL: v_icmp_i64_sle:
1037 ; GISEL-GFX10: ; %bb.0:
1038 ; GISEL-GFX10-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24
1039 ; GISEL-GFX10-NEXT: v_mov_b32_e32 v1, 0
1040 ; GISEL-GFX10-NEXT: s_waitcnt lgkmcnt(0)
1041 ; GISEL-GFX10-NEXT: v_cmp_ge_i64_e64 s2, 0x64, s[2:3]
1042 ; GISEL-GFX10-NEXT: v_mov_b32_e32 v0, s2
1043 ; GISEL-GFX10-NEXT: global_store_dword v1, v0, s[0:1]
1044 ; GISEL-GFX10-NEXT: s_endpgm
1045 %result = call i32 @llvm.amdgcn.icmp.i64(i64 %src, i64 100, i32 41)
1046 store i32 %result, ptr addrspace(1) %out
1050 define amdgpu_kernel void @v_icmp_i16_eq(ptr addrspace(1) %out, i16 %src) {
1051 ; SDAG-GFX11-LABEL: v_icmp_i16_eq:
1052 ; SDAG-GFX11: ; %bb.0:
1053 ; SDAG-GFX11-NEXT: s_clause 0x1
1054 ; SDAG-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c
1055 ; SDAG-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x24
1056 ; SDAG-GFX11-NEXT: s_waitcnt lgkmcnt(0)
1057 ; SDAG-GFX11-NEXT: v_cmp_eq_u16_e64 s2, 0x64, s2
1058 ; SDAG-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)
1059 ; SDAG-GFX11-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
1060 ; SDAG-GFX11-NEXT: global_store_b32 v0, v1, s[0:1]
1061 ; SDAG-GFX11-NEXT: s_endpgm
1063 ; SDAG-GFX10-LABEL: v_icmp_i16_eq:
1064 ; SDAG-GFX10: ; %bb.0:
1065 ; SDAG-GFX10-NEXT: s_clause 0x1
1066 ; SDAG-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c
1067 ; SDAG-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24
1068 ; SDAG-GFX10-NEXT: v_mov_b32_e32 v0, 0
1069 ; SDAG-GFX10-NEXT: s_waitcnt lgkmcnt(0)
1070 ; SDAG-GFX10-NEXT: v_cmp_eq_u16_e64 s2, 0x64, s2
1071 ; SDAG-GFX10-NEXT: v_mov_b32_e32 v1, s2
1072 ; SDAG-GFX10-NEXT: global_store_dword v0, v1, s[0:1]
1073 ; SDAG-GFX10-NEXT: s_endpgm
1075 ; GISEL-GFX11-LABEL: v_icmp_i16_eq:
1076 ; GISEL-GFX11: ; %bb.0:
1077 ; GISEL-GFX11-NEXT: s_clause 0x1
1078 ; GISEL-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c
1079 ; GISEL-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x24
1080 ; GISEL-GFX11-NEXT: v_mov_b32_e32 v1, 0
1081 ; GISEL-GFX11-NEXT: s_waitcnt lgkmcnt(0)
1082 ; GISEL-GFX11-NEXT: v_cmp_eq_u16_e64 s2, 0x64, s2
1083 ; GISEL-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)
1084 ; GISEL-GFX11-NEXT: v_mov_b32_e32 v0, s2
1085 ; GISEL-GFX11-NEXT: global_store_b32 v1, v0, s[0:1]
1086 ; GISEL-GFX11-NEXT: s_endpgm
1088 ; GISEL-GFX10-LABEL: v_icmp_i16_eq:
1089 ; GISEL-GFX10: ; %bb.0:
1090 ; GISEL-GFX10-NEXT: s_clause 0x1
1091 ; GISEL-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c
1092 ; GISEL-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24
1093 ; GISEL-GFX10-NEXT: v_mov_b32_e32 v1, 0
1094 ; GISEL-GFX10-NEXT: s_waitcnt lgkmcnt(0)
1095 ; GISEL-GFX10-NEXT: v_cmp_eq_u16_e64 s2, 0x64, s2
1096 ; GISEL-GFX10-NEXT: v_mov_b32_e32 v0, s2
1097 ; GISEL-GFX10-NEXT: global_store_dword v1, v0, s[0:1]
1098 ; GISEL-GFX10-NEXT: s_endpgm
1099 %result = call i32 @llvm.amdgcn.icmp.i16(i16 %src, i16 100, i32 32)
1100 store i32 %result, ptr addrspace(1) %out
1104 define amdgpu_kernel void @v_icmp_i16(ptr addrspace(1) %out, i16 %src) {
1105 ; SDAG-GFX11-LABEL: v_icmp_i16:
1106 ; SDAG-GFX11: ; %bb.0:
1107 ; SDAG-GFX11-NEXT: s_endpgm
1109 ; SDAG-GFX10-LABEL: v_icmp_i16:
1110 ; SDAG-GFX10: ; %bb.0:
1111 ; SDAG-GFX10-NEXT: s_endpgm
1113 ; GISEL-GFX11-LABEL: v_icmp_i16:
1114 ; GISEL-GFX11: ; %bb.0:
1115 ; GISEL-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x24
1116 ; GISEL-GFX11-NEXT: v_mov_b32_e32 v0, 0
1117 ; GISEL-GFX11-NEXT: s_waitcnt lgkmcnt(0)
1118 ; GISEL-GFX11-NEXT: global_store_b32 v0, v0, s[0:1]
1119 ; GISEL-GFX11-NEXT: s_endpgm
1121 ; GISEL-GFX10-LABEL: v_icmp_i16:
1122 ; GISEL-GFX10: ; %bb.0:
1123 ; GISEL-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24
1124 ; GISEL-GFX10-NEXT: v_mov_b32_e32 v0, 0
1125 ; GISEL-GFX10-NEXT: s_waitcnt lgkmcnt(0)
1126 ; GISEL-GFX10-NEXT: global_store_dword v0, v0, s[0:1]
1127 ; GISEL-GFX10-NEXT: s_endpgm
1128 %result = call i32 @llvm.amdgcn.icmp.i16(i16 %src, i16 100, i32 30)
1129 store i32 %result, ptr addrspace(1) %out
1133 define amdgpu_kernel void @v_icmp_i16_ne(ptr addrspace(1) %out, i16 %src) {
1134 ; SDAG-GFX11-LABEL: v_icmp_i16_ne:
1135 ; SDAG-GFX11: ; %bb.0:
1136 ; SDAG-GFX11-NEXT: s_clause 0x1
1137 ; SDAG-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c
1138 ; SDAG-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x24
1139 ; SDAG-GFX11-NEXT: s_waitcnt lgkmcnt(0)
1140 ; SDAG-GFX11-NEXT: v_cmp_ne_u16_e64 s2, 0x64, s2
1141 ; SDAG-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)
1142 ; SDAG-GFX11-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
1143 ; SDAG-GFX11-NEXT: global_store_b32 v0, v1, s[0:1]
1144 ; SDAG-GFX11-NEXT: s_endpgm
1146 ; SDAG-GFX10-LABEL: v_icmp_i16_ne:
1147 ; SDAG-GFX10: ; %bb.0:
1148 ; SDAG-GFX10-NEXT: s_clause 0x1
1149 ; SDAG-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c
1150 ; SDAG-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24
1151 ; SDAG-GFX10-NEXT: v_mov_b32_e32 v0, 0
1152 ; SDAG-GFX10-NEXT: s_waitcnt lgkmcnt(0)
1153 ; SDAG-GFX10-NEXT: v_cmp_ne_u16_e64 s2, 0x64, s2
1154 ; SDAG-GFX10-NEXT: v_mov_b32_e32 v1, s2
1155 ; SDAG-GFX10-NEXT: global_store_dword v0, v1, s[0:1]
1156 ; SDAG-GFX10-NEXT: s_endpgm
1158 ; GISEL-GFX11-LABEL: v_icmp_i16_ne:
1159 ; GISEL-GFX11: ; %bb.0:
1160 ; GISEL-GFX11-NEXT: s_clause 0x1
1161 ; GISEL-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c
1162 ; GISEL-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x24
1163 ; GISEL-GFX11-NEXT: v_mov_b32_e32 v1, 0
1164 ; GISEL-GFX11-NEXT: s_waitcnt lgkmcnt(0)
1165 ; GISEL-GFX11-NEXT: v_cmp_ne_u16_e64 s2, 0x64, s2
1166 ; GISEL-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)
1167 ; GISEL-GFX11-NEXT: v_mov_b32_e32 v0, s2
1168 ; GISEL-GFX11-NEXT: global_store_b32 v1, v0, s[0:1]
1169 ; GISEL-GFX11-NEXT: s_endpgm
1171 ; GISEL-GFX10-LABEL: v_icmp_i16_ne:
1172 ; GISEL-GFX10: ; %bb.0:
1173 ; GISEL-GFX10-NEXT: s_clause 0x1
1174 ; GISEL-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c
1175 ; GISEL-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24
1176 ; GISEL-GFX10-NEXT: v_mov_b32_e32 v1, 0
1177 ; GISEL-GFX10-NEXT: s_waitcnt lgkmcnt(0)
1178 ; GISEL-GFX10-NEXT: v_cmp_ne_u16_e64 s2, 0x64, s2
1179 ; GISEL-GFX10-NEXT: v_mov_b32_e32 v0, s2
1180 ; GISEL-GFX10-NEXT: global_store_dword v1, v0, s[0:1]
1181 ; GISEL-GFX10-NEXT: s_endpgm
1182 %result = call i32 @llvm.amdgcn.icmp.i16(i16 %src, i16 100, i32 33)
1183 store i32 %result, ptr addrspace(1) %out
1187 define amdgpu_kernel void @v_icmp_i16_ugt(ptr addrspace(1) %out, i16 %src) {
1188 ; SDAG-GFX11-LABEL: v_icmp_i16_ugt:
1189 ; SDAG-GFX11: ; %bb.0:
1190 ; SDAG-GFX11-NEXT: s_clause 0x1
1191 ; SDAG-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c
1192 ; SDAG-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x24
1193 ; SDAG-GFX11-NEXT: s_waitcnt lgkmcnt(0)
1194 ; SDAG-GFX11-NEXT: v_cmp_lt_u16_e64 s2, 0x64, s2
1195 ; SDAG-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)
1196 ; SDAG-GFX11-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
1197 ; SDAG-GFX11-NEXT: global_store_b32 v0, v1, s[0:1]
1198 ; SDAG-GFX11-NEXT: s_endpgm
1200 ; SDAG-GFX10-LABEL: v_icmp_i16_ugt:
1201 ; SDAG-GFX10: ; %bb.0:
1202 ; SDAG-GFX10-NEXT: s_clause 0x1
1203 ; SDAG-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c
1204 ; SDAG-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24
1205 ; SDAG-GFX10-NEXT: v_mov_b32_e32 v0, 0
1206 ; SDAG-GFX10-NEXT: s_waitcnt lgkmcnt(0)
1207 ; SDAG-GFX10-NEXT: v_cmp_lt_u16_e64 s2, 0x64, s2
1208 ; SDAG-GFX10-NEXT: v_mov_b32_e32 v1, s2
1209 ; SDAG-GFX10-NEXT: global_store_dword v0, v1, s[0:1]
1210 ; SDAG-GFX10-NEXT: s_endpgm
1212 ; GISEL-GFX11-LABEL: v_icmp_i16_ugt:
1213 ; GISEL-GFX11: ; %bb.0:
1214 ; GISEL-GFX11-NEXT: s_clause 0x1
1215 ; GISEL-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c
1216 ; GISEL-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x24
1217 ; GISEL-GFX11-NEXT: v_mov_b32_e32 v1, 0
1218 ; GISEL-GFX11-NEXT: s_waitcnt lgkmcnt(0)
1219 ; GISEL-GFX11-NEXT: v_cmp_lt_u16_e64 s2, 0x64, s2
1220 ; GISEL-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)
1221 ; GISEL-GFX11-NEXT: v_mov_b32_e32 v0, s2
1222 ; GISEL-GFX11-NEXT: global_store_b32 v1, v0, s[0:1]
1223 ; GISEL-GFX11-NEXT: s_endpgm
1225 ; GISEL-GFX10-LABEL: v_icmp_i16_ugt:
1226 ; GISEL-GFX10: ; %bb.0:
1227 ; GISEL-GFX10-NEXT: s_clause 0x1
1228 ; GISEL-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c
1229 ; GISEL-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24
1230 ; GISEL-GFX10-NEXT: v_mov_b32_e32 v1, 0
1231 ; GISEL-GFX10-NEXT: s_waitcnt lgkmcnt(0)
1232 ; GISEL-GFX10-NEXT: v_cmp_lt_u16_e64 s2, 0x64, s2
1233 ; GISEL-GFX10-NEXT: v_mov_b32_e32 v0, s2
1234 ; GISEL-GFX10-NEXT: global_store_dword v1, v0, s[0:1]
1235 ; GISEL-GFX10-NEXT: s_endpgm
1236 %result = call i32 @llvm.amdgcn.icmp.i16(i16 %src, i16 100, i32 34)
1237 store i32 %result, ptr addrspace(1) %out
1241 define amdgpu_kernel void @v_icmp_i16_uge(ptr addrspace(1) %out, i16 %src) {
1242 ; SDAG-GFX11-LABEL: v_icmp_i16_uge:
1243 ; SDAG-GFX11: ; %bb.0:
1244 ; SDAG-GFX11-NEXT: s_clause 0x1
1245 ; SDAG-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c
1246 ; SDAG-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x24
1247 ; SDAG-GFX11-NEXT: s_waitcnt lgkmcnt(0)
1248 ; SDAG-GFX11-NEXT: v_cmp_le_u16_e64 s2, 0x64, s2
1249 ; SDAG-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)
1250 ; SDAG-GFX11-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
1251 ; SDAG-GFX11-NEXT: global_store_b32 v0, v1, s[0:1]
1252 ; SDAG-GFX11-NEXT: s_endpgm
1254 ; SDAG-GFX10-LABEL: v_icmp_i16_uge:
1255 ; SDAG-GFX10: ; %bb.0:
1256 ; SDAG-GFX10-NEXT: s_clause 0x1
1257 ; SDAG-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c
1258 ; SDAG-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24
1259 ; SDAG-GFX10-NEXT: v_mov_b32_e32 v0, 0
1260 ; SDAG-GFX10-NEXT: s_waitcnt lgkmcnt(0)
1261 ; SDAG-GFX10-NEXT: v_cmp_le_u16_e64 s2, 0x64, s2
1262 ; SDAG-GFX10-NEXT: v_mov_b32_e32 v1, s2
1263 ; SDAG-GFX10-NEXT: global_store_dword v0, v1, s[0:1]
1264 ; SDAG-GFX10-NEXT: s_endpgm
1266 ; GISEL-GFX11-LABEL: v_icmp_i16_uge:
1267 ; GISEL-GFX11: ; %bb.0:
1268 ; GISEL-GFX11-NEXT: s_clause 0x1
1269 ; GISEL-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c
1270 ; GISEL-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x24
1271 ; GISEL-GFX11-NEXT: v_mov_b32_e32 v1, 0
1272 ; GISEL-GFX11-NEXT: s_waitcnt lgkmcnt(0)
1273 ; GISEL-GFX11-NEXT: v_cmp_le_u16_e64 s2, 0x64, s2
1274 ; GISEL-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)
1275 ; GISEL-GFX11-NEXT: v_mov_b32_e32 v0, s2
1276 ; GISEL-GFX11-NEXT: global_store_b32 v1, v0, s[0:1]
1277 ; GISEL-GFX11-NEXT: s_endpgm
1279 ; GISEL-GFX10-LABEL: v_icmp_i16_uge:
1280 ; GISEL-GFX10: ; %bb.0:
1281 ; GISEL-GFX10-NEXT: s_clause 0x1
1282 ; GISEL-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c
1283 ; GISEL-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24
1284 ; GISEL-GFX10-NEXT: v_mov_b32_e32 v1, 0
1285 ; GISEL-GFX10-NEXT: s_waitcnt lgkmcnt(0)
1286 ; GISEL-GFX10-NEXT: v_cmp_le_u16_e64 s2, 0x64, s2
1287 ; GISEL-GFX10-NEXT: v_mov_b32_e32 v0, s2
1288 ; GISEL-GFX10-NEXT: global_store_dword v1, v0, s[0:1]
1289 ; GISEL-GFX10-NEXT: s_endpgm
1290 %result = call i32 @llvm.amdgcn.icmp.i16(i16 %src, i16 100, i32 35)
1291 store i32 %result, ptr addrspace(1) %out
1295 define amdgpu_kernel void @v_icmp_i16_ult(ptr addrspace(1) %out, i16 %src) {
1296 ; SDAG-GFX11-LABEL: v_icmp_i16_ult:
1297 ; SDAG-GFX11: ; %bb.0:
1298 ; SDAG-GFX11-NEXT: s_clause 0x1
1299 ; SDAG-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c
1300 ; SDAG-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x24
1301 ; SDAG-GFX11-NEXT: s_waitcnt lgkmcnt(0)
1302 ; SDAG-GFX11-NEXT: v_cmp_gt_u16_e64 s2, 0x64, s2
1303 ; SDAG-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)
1304 ; SDAG-GFX11-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
1305 ; SDAG-GFX11-NEXT: global_store_b32 v0, v1, s[0:1]
1306 ; SDAG-GFX11-NEXT: s_endpgm
1308 ; SDAG-GFX10-LABEL: v_icmp_i16_ult:
1309 ; SDAG-GFX10: ; %bb.0:
1310 ; SDAG-GFX10-NEXT: s_clause 0x1
1311 ; SDAG-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c
1312 ; SDAG-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24
1313 ; SDAG-GFX10-NEXT: v_mov_b32_e32 v0, 0
1314 ; SDAG-GFX10-NEXT: s_waitcnt lgkmcnt(0)
1315 ; SDAG-GFX10-NEXT: v_cmp_gt_u16_e64 s2, 0x64, s2
1316 ; SDAG-GFX10-NEXT: v_mov_b32_e32 v1, s2
1317 ; SDAG-GFX10-NEXT: global_store_dword v0, v1, s[0:1]
1318 ; SDAG-GFX10-NEXT: s_endpgm
1320 ; GISEL-GFX11-LABEL: v_icmp_i16_ult:
1321 ; GISEL-GFX11: ; %bb.0:
1322 ; GISEL-GFX11-NEXT: s_clause 0x1
1323 ; GISEL-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c
1324 ; GISEL-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x24
1325 ; GISEL-GFX11-NEXT: v_mov_b32_e32 v1, 0
1326 ; GISEL-GFX11-NEXT: s_waitcnt lgkmcnt(0)
1327 ; GISEL-GFX11-NEXT: v_cmp_gt_u16_e64 s2, 0x64, s2
1328 ; GISEL-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)
1329 ; GISEL-GFX11-NEXT: v_mov_b32_e32 v0, s2
1330 ; GISEL-GFX11-NEXT: global_store_b32 v1, v0, s[0:1]
1331 ; GISEL-GFX11-NEXT: s_endpgm
1333 ; GISEL-GFX10-LABEL: v_icmp_i16_ult:
1334 ; GISEL-GFX10: ; %bb.0:
1335 ; GISEL-GFX10-NEXT: s_clause 0x1
1336 ; GISEL-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c
1337 ; GISEL-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24
1338 ; GISEL-GFX10-NEXT: v_mov_b32_e32 v1, 0
1339 ; GISEL-GFX10-NEXT: s_waitcnt lgkmcnt(0)
1340 ; GISEL-GFX10-NEXT: v_cmp_gt_u16_e64 s2, 0x64, s2
1341 ; GISEL-GFX10-NEXT: v_mov_b32_e32 v0, s2
1342 ; GISEL-GFX10-NEXT: global_store_dword v1, v0, s[0:1]
1343 ; GISEL-GFX10-NEXT: s_endpgm
1344 %result = call i32 @llvm.amdgcn.icmp.i16(i16 %src, i16 100, i32 36)
1345 store i32 %result, ptr addrspace(1) %out
1349 define amdgpu_kernel void @v_icmp_i16_ule(ptr addrspace(1) %out, i16 %src) {
1350 ; SDAG-GFX11-LABEL: v_icmp_i16_ule:
1351 ; SDAG-GFX11: ; %bb.0:
1352 ; SDAG-GFX11-NEXT: s_clause 0x1
1353 ; SDAG-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c
1354 ; SDAG-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x24
1355 ; SDAG-GFX11-NEXT: s_waitcnt lgkmcnt(0)
1356 ; SDAG-GFX11-NEXT: v_cmp_ge_u16_e64 s2, 0x64, s2
1357 ; SDAG-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)
1358 ; SDAG-GFX11-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
1359 ; SDAG-GFX11-NEXT: global_store_b32 v0, v1, s[0:1]
1360 ; SDAG-GFX11-NEXT: s_endpgm
1362 ; SDAG-GFX10-LABEL: v_icmp_i16_ule:
1363 ; SDAG-GFX10: ; %bb.0:
1364 ; SDAG-GFX10-NEXT: s_clause 0x1
1365 ; SDAG-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c
1366 ; SDAG-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24
1367 ; SDAG-GFX10-NEXT: v_mov_b32_e32 v0, 0
1368 ; SDAG-GFX10-NEXT: s_waitcnt lgkmcnt(0)
1369 ; SDAG-GFX10-NEXT: v_cmp_ge_u16_e64 s2, 0x64, s2
1370 ; SDAG-GFX10-NEXT: v_mov_b32_e32 v1, s2
1371 ; SDAG-GFX10-NEXT: global_store_dword v0, v1, s[0:1]
1372 ; SDAG-GFX10-NEXT: s_endpgm
1374 ; GISEL-GFX11-LABEL: v_icmp_i16_ule:
1375 ; GISEL-GFX11: ; %bb.0:
1376 ; GISEL-GFX11-NEXT: s_clause 0x1
1377 ; GISEL-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c
1378 ; GISEL-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x24
1379 ; GISEL-GFX11-NEXT: v_mov_b32_e32 v1, 0
1380 ; GISEL-GFX11-NEXT: s_waitcnt lgkmcnt(0)
1381 ; GISEL-GFX11-NEXT: v_cmp_ge_u16_e64 s2, 0x64, s2
1382 ; GISEL-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)
1383 ; GISEL-GFX11-NEXT: v_mov_b32_e32 v0, s2
1384 ; GISEL-GFX11-NEXT: global_store_b32 v1, v0, s[0:1]
1385 ; GISEL-GFX11-NEXT: s_endpgm
1387 ; GISEL-GFX10-LABEL: v_icmp_i16_ule:
1388 ; GISEL-GFX10: ; %bb.0:
1389 ; GISEL-GFX10-NEXT: s_clause 0x1
1390 ; GISEL-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c
1391 ; GISEL-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24
1392 ; GISEL-GFX10-NEXT: v_mov_b32_e32 v1, 0
1393 ; GISEL-GFX10-NEXT: s_waitcnt lgkmcnt(0)
1394 ; GISEL-GFX10-NEXT: v_cmp_ge_u16_e64 s2, 0x64, s2
1395 ; GISEL-GFX10-NEXT: v_mov_b32_e32 v0, s2
1396 ; GISEL-GFX10-NEXT: global_store_dword v1, v0, s[0:1]
1397 ; GISEL-GFX10-NEXT: s_endpgm
1398 %result = call i32 @llvm.amdgcn.icmp.i16(i16 %src, i16 100, i32 37)
1399 store i32 %result, ptr addrspace(1) %out
1403 define amdgpu_kernel void @v_icmp_i16_sgt(ptr addrspace(1) %out, i16 %src) #1 {
1404 ; SDAG-GFX11-LABEL: v_icmp_i16_sgt:
1405 ; SDAG-GFX11: ; %bb.0:
1406 ; SDAG-GFX11-NEXT: s_clause 0x1
1407 ; SDAG-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c
1408 ; SDAG-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x24
1409 ; SDAG-GFX11-NEXT: s_waitcnt lgkmcnt(0)
1410 ; SDAG-GFX11-NEXT: v_cmp_lt_i16_e64 s2, 0x64, s2
1411 ; SDAG-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)
1412 ; SDAG-GFX11-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
1413 ; SDAG-GFX11-NEXT: global_store_b32 v0, v1, s[0:1]
1414 ; SDAG-GFX11-NEXT: s_endpgm
1416 ; SDAG-GFX10-LABEL: v_icmp_i16_sgt:
1417 ; SDAG-GFX10: ; %bb.0:
1418 ; SDAG-GFX10-NEXT: s_clause 0x1
1419 ; SDAG-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c
1420 ; SDAG-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24
1421 ; SDAG-GFX10-NEXT: v_mov_b32_e32 v0, 0
1422 ; SDAG-GFX10-NEXT: s_waitcnt lgkmcnt(0)
1423 ; SDAG-GFX10-NEXT: v_cmp_lt_i16_e64 s2, 0x64, s2
1424 ; SDAG-GFX10-NEXT: v_mov_b32_e32 v1, s2
1425 ; SDAG-GFX10-NEXT: global_store_dword v0, v1, s[0:1]
1426 ; SDAG-GFX10-NEXT: s_endpgm
1428 ; GISEL-GFX11-LABEL: v_icmp_i16_sgt:
1429 ; GISEL-GFX11: ; %bb.0:
1430 ; GISEL-GFX11-NEXT: s_clause 0x1
1431 ; GISEL-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c
1432 ; GISEL-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x24
1433 ; GISEL-GFX11-NEXT: v_mov_b32_e32 v1, 0
1434 ; GISEL-GFX11-NEXT: s_waitcnt lgkmcnt(0)
1435 ; GISEL-GFX11-NEXT: v_cmp_lt_i16_e64 s2, 0x64, s2
1436 ; GISEL-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)
1437 ; GISEL-GFX11-NEXT: v_mov_b32_e32 v0, s2
1438 ; GISEL-GFX11-NEXT: global_store_b32 v1, v0, s[0:1]
1439 ; GISEL-GFX11-NEXT: s_endpgm
1441 ; GISEL-GFX10-LABEL: v_icmp_i16_sgt:
1442 ; GISEL-GFX10: ; %bb.0:
1443 ; GISEL-GFX10-NEXT: s_clause 0x1
1444 ; GISEL-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c
1445 ; GISEL-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24
1446 ; GISEL-GFX10-NEXT: v_mov_b32_e32 v1, 0
1447 ; GISEL-GFX10-NEXT: s_waitcnt lgkmcnt(0)
1448 ; GISEL-GFX10-NEXT: v_cmp_lt_i16_e64 s2, 0x64, s2
1449 ; GISEL-GFX10-NEXT: v_mov_b32_e32 v0, s2
1450 ; GISEL-GFX10-NEXT: global_store_dword v1, v0, s[0:1]
1451 ; GISEL-GFX10-NEXT: s_endpgm
1452 %result = call i32 @llvm.amdgcn.icmp.i16(i16 %src, i16 100, i32 38)
1453 store i32 %result, ptr addrspace(1) %out
1457 define amdgpu_kernel void @v_icmp_i16_sge(ptr addrspace(1) %out, i16 %src) {
1458 ; SDAG-GFX11-LABEL: v_icmp_i16_sge:
1459 ; SDAG-GFX11: ; %bb.0:
1460 ; SDAG-GFX11-NEXT: s_clause 0x1
1461 ; SDAG-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c
1462 ; SDAG-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x24
1463 ; SDAG-GFX11-NEXT: s_waitcnt lgkmcnt(0)
1464 ; SDAG-GFX11-NEXT: v_cmp_le_i16_e64 s2, 0x64, s2
1465 ; SDAG-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)
1466 ; SDAG-GFX11-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
1467 ; SDAG-GFX11-NEXT: global_store_b32 v0, v1, s[0:1]
1468 ; SDAG-GFX11-NEXT: s_endpgm
1470 ; SDAG-GFX10-LABEL: v_icmp_i16_sge:
1471 ; SDAG-GFX10: ; %bb.0:
1472 ; SDAG-GFX10-NEXT: s_clause 0x1
1473 ; SDAG-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c
1474 ; SDAG-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24
1475 ; SDAG-GFX10-NEXT: v_mov_b32_e32 v0, 0
1476 ; SDAG-GFX10-NEXT: s_waitcnt lgkmcnt(0)
1477 ; SDAG-GFX10-NEXT: v_cmp_le_i16_e64 s2, 0x64, s2
1478 ; SDAG-GFX10-NEXT: v_mov_b32_e32 v1, s2
1479 ; SDAG-GFX10-NEXT: global_store_dword v0, v1, s[0:1]
1480 ; SDAG-GFX10-NEXT: s_endpgm
1482 ; GISEL-GFX11-LABEL: v_icmp_i16_sge:
1483 ; GISEL-GFX11: ; %bb.0:
1484 ; GISEL-GFX11-NEXT: s_clause 0x1
1485 ; GISEL-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c
1486 ; GISEL-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x24
1487 ; GISEL-GFX11-NEXT: v_mov_b32_e32 v1, 0
1488 ; GISEL-GFX11-NEXT: s_waitcnt lgkmcnt(0)
1489 ; GISEL-GFX11-NEXT: v_cmp_le_i16_e64 s2, 0x64, s2
1490 ; GISEL-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)
1491 ; GISEL-GFX11-NEXT: v_mov_b32_e32 v0, s2
1492 ; GISEL-GFX11-NEXT: global_store_b32 v1, v0, s[0:1]
1493 ; GISEL-GFX11-NEXT: s_endpgm
1495 ; GISEL-GFX10-LABEL: v_icmp_i16_sge:
1496 ; GISEL-GFX10: ; %bb.0:
1497 ; GISEL-GFX10-NEXT: s_clause 0x1
1498 ; GISEL-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c
1499 ; GISEL-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24
1500 ; GISEL-GFX10-NEXT: v_mov_b32_e32 v1, 0
1501 ; GISEL-GFX10-NEXT: s_waitcnt lgkmcnt(0)
1502 ; GISEL-GFX10-NEXT: v_cmp_le_i16_e64 s2, 0x64, s2
1503 ; GISEL-GFX10-NEXT: v_mov_b32_e32 v0, s2
1504 ; GISEL-GFX10-NEXT: global_store_dword v1, v0, s[0:1]
1505 ; GISEL-GFX10-NEXT: s_endpgm
1506 %result = call i32 @llvm.amdgcn.icmp.i16(i16 %src, i16 100, i32 39)
1507 store i32 %result, ptr addrspace(1) %out
1511 define amdgpu_kernel void @v_icmp_i16_slt(ptr addrspace(1) %out, i16 %src) {
1512 ; SDAG-GFX11-LABEL: v_icmp_i16_slt:
1513 ; SDAG-GFX11: ; %bb.0:
1514 ; SDAG-GFX11-NEXT: s_clause 0x1
1515 ; SDAG-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c
1516 ; SDAG-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x24
1517 ; SDAG-GFX11-NEXT: s_waitcnt lgkmcnt(0)
1518 ; SDAG-GFX11-NEXT: v_cmp_gt_i16_e64 s2, 0x64, s2
1519 ; SDAG-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)
1520 ; SDAG-GFX11-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
1521 ; SDAG-GFX11-NEXT: global_store_b32 v0, v1, s[0:1]
1522 ; SDAG-GFX11-NEXT: s_endpgm
1524 ; SDAG-GFX10-LABEL: v_icmp_i16_slt:
1525 ; SDAG-GFX10: ; %bb.0:
1526 ; SDAG-GFX10-NEXT: s_clause 0x1
1527 ; SDAG-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c
1528 ; SDAG-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24
1529 ; SDAG-GFX10-NEXT: v_mov_b32_e32 v0, 0
1530 ; SDAG-GFX10-NEXT: s_waitcnt lgkmcnt(0)
1531 ; SDAG-GFX10-NEXT: v_cmp_gt_i16_e64 s2, 0x64, s2
1532 ; SDAG-GFX10-NEXT: v_mov_b32_e32 v1, s2
1533 ; SDAG-GFX10-NEXT: global_store_dword v0, v1, s[0:1]
1534 ; SDAG-GFX10-NEXT: s_endpgm
1536 ; GISEL-GFX11-LABEL: v_icmp_i16_slt:
1537 ; GISEL-GFX11: ; %bb.0:
1538 ; GISEL-GFX11-NEXT: s_clause 0x1
1539 ; GISEL-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c
1540 ; GISEL-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x24
1541 ; GISEL-GFX11-NEXT: v_mov_b32_e32 v1, 0
1542 ; GISEL-GFX11-NEXT: s_waitcnt lgkmcnt(0)
1543 ; GISEL-GFX11-NEXT: v_cmp_gt_i16_e64 s2, 0x64, s2
1544 ; GISEL-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)
1545 ; GISEL-GFX11-NEXT: v_mov_b32_e32 v0, s2
1546 ; GISEL-GFX11-NEXT: global_store_b32 v1, v0, s[0:1]
1547 ; GISEL-GFX11-NEXT: s_endpgm
1549 ; GISEL-GFX10-LABEL: v_icmp_i16_slt:
1550 ; GISEL-GFX10: ; %bb.0:
1551 ; GISEL-GFX10-NEXT: s_clause 0x1
1552 ; GISEL-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c
1553 ; GISEL-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24
1554 ; GISEL-GFX10-NEXT: v_mov_b32_e32 v1, 0
1555 ; GISEL-GFX10-NEXT: s_waitcnt lgkmcnt(0)
1556 ; GISEL-GFX10-NEXT: v_cmp_gt_i16_e64 s2, 0x64, s2
1557 ; GISEL-GFX10-NEXT: v_mov_b32_e32 v0, s2
1558 ; GISEL-GFX10-NEXT: global_store_dword v1, v0, s[0:1]
1559 ; GISEL-GFX10-NEXT: s_endpgm
1560 %result = call i32 @llvm.amdgcn.icmp.i16(i16 %src, i16 100, i32 40)
1561 store i32 %result, ptr addrspace(1) %out
1565 define amdgpu_kernel void @v_icmp_i16_sle(ptr addrspace(1) %out, i16 %src) {
1566 ; SDAG-GFX11-LABEL: v_icmp_i16_sle:
1567 ; SDAG-GFX11: ; %bb.0:
1568 ; SDAG-GFX11-NEXT: s_clause 0x1
1569 ; SDAG-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c
1570 ; SDAG-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x24
1571 ; SDAG-GFX11-NEXT: s_waitcnt lgkmcnt(0)
1572 ; SDAG-GFX11-NEXT: v_cmp_ge_i16_e64 s2, 0x64, s2
1573 ; SDAG-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)
1574 ; SDAG-GFX11-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
1575 ; SDAG-GFX11-NEXT: global_store_b32 v0, v1, s[0:1]
1576 ; SDAG-GFX11-NEXT: s_endpgm
1578 ; SDAG-GFX10-LABEL: v_icmp_i16_sle:
1579 ; SDAG-GFX10: ; %bb.0:
1580 ; SDAG-GFX10-NEXT: s_clause 0x1
1581 ; SDAG-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c
1582 ; SDAG-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24
1583 ; SDAG-GFX10-NEXT: v_mov_b32_e32 v0, 0
1584 ; SDAG-GFX10-NEXT: s_waitcnt lgkmcnt(0)
1585 ; SDAG-GFX10-NEXT: v_cmp_ge_i16_e64 s2, 0x64, s2
1586 ; SDAG-GFX10-NEXT: v_mov_b32_e32 v1, s2
1587 ; SDAG-GFX10-NEXT: global_store_dword v0, v1, s[0:1]
1588 ; SDAG-GFX10-NEXT: s_endpgm
1590 ; GISEL-GFX11-LABEL: v_icmp_i16_sle:
1591 ; GISEL-GFX11: ; %bb.0:
1592 ; GISEL-GFX11-NEXT: s_clause 0x1
1593 ; GISEL-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c
1594 ; GISEL-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x24
1595 ; GISEL-GFX11-NEXT: v_mov_b32_e32 v1, 0
1596 ; GISEL-GFX11-NEXT: s_waitcnt lgkmcnt(0)
1597 ; GISEL-GFX11-NEXT: v_cmp_ge_i16_e64 s2, 0x64, s2
1598 ; GISEL-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)
1599 ; GISEL-GFX11-NEXT: v_mov_b32_e32 v0, s2
1600 ; GISEL-GFX11-NEXT: global_store_b32 v1, v0, s[0:1]
1601 ; GISEL-GFX11-NEXT: s_endpgm
1603 ; GISEL-GFX10-LABEL: v_icmp_i16_sle:
1604 ; GISEL-GFX10: ; %bb.0:
1605 ; GISEL-GFX10-NEXT: s_clause 0x1
1606 ; GISEL-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c
1607 ; GISEL-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24
1608 ; GISEL-GFX10-NEXT: v_mov_b32_e32 v1, 0
1609 ; GISEL-GFX10-NEXT: s_waitcnt lgkmcnt(0)
1610 ; GISEL-GFX10-NEXT: v_cmp_ge_i16_e64 s2, 0x64, s2
1611 ; GISEL-GFX10-NEXT: v_mov_b32_e32 v0, s2
1612 ; GISEL-GFX10-NEXT: global_store_dword v1, v0, s[0:1]
1613 ; GISEL-GFX10-NEXT: s_endpgm
1614 %result = call i32 @llvm.amdgcn.icmp.i16(i16 %src, i16 100, i32 41)
1615 store i32 %result, ptr addrspace(1) %out
1619 define amdgpu_kernel void @v_icmp_i1_ne0(ptr addrspace(1) %out, i32 %a, i32 %b) {
1620 ; GFX11-LABEL: v_icmp_i1_ne0:
1622 ; GFX11-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
1623 ; GFX11-NEXT: s_waitcnt lgkmcnt(0)
1624 ; GFX11-NEXT: s_cmp_gt_u32 s2, 1
1625 ; GFX11-NEXT: s_cselect_b32 s2, -1, 0
1626 ; GFX11-NEXT: s_cmp_gt_u32 s3, 2
1627 ; GFX11-NEXT: s_cselect_b32 s3, -1, 0
1628 ; GFX11-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
1629 ; GFX11-NEXT: s_and_b32 s2, s2, s3
1630 ; GFX11-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2
1631 ; GFX11-NEXT: global_store_b32 v0, v1, s[0:1]
1632 ; GFX11-NEXT: s_endpgm
1634 ; GFX10-LABEL: v_icmp_i1_ne0:
1636 ; GFX10-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24
1637 ; GFX10-NEXT: v_mov_b32_e32 v0, 0
1638 ; GFX10-NEXT: s_waitcnt lgkmcnt(0)
1639 ; GFX10-NEXT: s_cmp_gt_u32 s2, 1
1640 ; GFX10-NEXT: s_cselect_b32 s2, -1, 0
1641 ; GFX10-NEXT: s_cmp_gt_u32 s3, 2
1642 ; GFX10-NEXT: s_cselect_b32 s3, -1, 0
1643 ; GFX10-NEXT: s_and_b32 s2, s2, s3
1644 ; GFX10-NEXT: v_mov_b32_e32 v1, s2
1645 ; GFX10-NEXT: global_store_dword v0, v1, s[0:1]
1646 ; GFX10-NEXT: s_endpgm
1647 %c0 = icmp ugt i32 %a, 1
1648 %c1 = icmp ugt i32 %b, 2
1649 %src = and i1 %c0, %c1
1650 %result = call i32 @llvm.amdgcn.icmp.i1(i1 %src, i1 false, i32 33)
1651 store i32 %result, ptr addrspace(1) %out
1655 define amdgpu_ps void @test_intr_icmp_i32_invalid_cc(ptr addrspace(1) %out, i32 %src) {
1656 ; SDAG-GFX11-LABEL: test_intr_icmp_i32_invalid_cc:
1657 ; SDAG-GFX11: ; %bb.0:
1658 ; SDAG-GFX11-NEXT: s_endpgm
1660 ; SDAG-GFX10-LABEL: test_intr_icmp_i32_invalid_cc:
1661 ; SDAG-GFX10: ; %bb.0:
1662 ; SDAG-GFX10-NEXT: s_endpgm
1664 ; GISEL-GFX11-LABEL: test_intr_icmp_i32_invalid_cc:
1665 ; GISEL-GFX11: ; %bb.0:
1666 ; GISEL-GFX11-NEXT: global_store_b32 v[0:1], v0, off
1667 ; GISEL-GFX11-NEXT: s_endpgm
1669 ; GISEL-GFX10-LABEL: test_intr_icmp_i32_invalid_cc:
1670 ; GISEL-GFX10: ; %bb.0:
1671 ; GISEL-GFX10-NEXT: global_store_dword v[0:1], v0, off
1672 ; GISEL-GFX10-NEXT: s_endpgm
1673 %result = call i32 @llvm.amdgcn.icmp.i32(i32 %src, i32 100, i32 9999)
1674 store i32 %result, ptr addrspace(1) %out
1678 attributes #0 = { nounwind readnone convergent }
1679 ;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line: