[InstCombine] Signed saturation patterns
[llvm-complete.git] / test / CodeGen / AMDGPU / sopk-compares.ll
blob61993fd9ff26e8836f55dda56d5676dbd27885fb
1 ; RUN: llc -mtriple=amdgcn--amdpal -mcpu=tahiti -verify-machineinstrs < %s | FileCheck -check-prefix=GCN -check-prefix=SI %s
2 ; RUN: llc -mtriple=amdgcn--amdpal -mcpu=tonga -mattr=-flat-for-global -verify-machineinstrs < %s | FileCheck -check-prefix=GCN -check-prefix=VI %s
4 ; Since this intrinsic is exposed as a constant after isel, use it to
5 ; defeat the DAG's compare with constant canonicalizations.
6 declare i32 @llvm.amdgcn.groupstaticsize() #1
8 @lds = addrspace(3) global [512 x i32] undef, align 4
10 ; GCN-LABEL: {{^}}br_scc_eq_i32_inline_imm:
11 ; GCN: s_cmp_eq_u32 s{{[0-9]+}}, 4{{$}}
12 define amdgpu_kernel void @br_scc_eq_i32_inline_imm(i32 %cond, i32 addrspace(1)* %out) #0 {
13 entry:
14   %cmp0 = icmp eq i32 %cond, 4
15   br i1 %cmp0, label %endif, label %if
17 if:
18   call void asm sideeffect "", ""()
19   br label %endif
21 endif:
22   store volatile i32 1, i32 addrspace(1)* %out
23   ret void
26 ; GCN-LABEL: {{^}}br_scc_eq_i32_simm16_max:
27 ; GCN: s_cmpk_eq_i32 s{{[0-9]+}}, 0x7fff{{$}}
28 define amdgpu_kernel void @br_scc_eq_i32_simm16_max(i32 %cond, i32 addrspace(1)* %out) #0 {
29 entry:
30   %cmp0 = icmp eq i32 %cond, 32767
31   br i1 %cmp0, label %endif, label %if
33 if:
34   call void asm sideeffect "", ""()
35   br label %endif
37 endif:
38   store volatile i32 1, i32 addrspace(1)* %out
39   ret void
42 ; GCN-LABEL: {{^}}br_scc_eq_i32_simm16_max_p1:
43 ; GCN: s_cmpk_eq_u32 s{{[0-9]+}}, 0x8000{{$}}
44 define amdgpu_kernel void @br_scc_eq_i32_simm16_max_p1(i32 %cond, i32 addrspace(1)* %out) #0 {
45 entry:
46   %cmp0 = icmp eq i32 %cond, 32768
47   br i1 %cmp0, label %endif, label %if
49 if:
50   call void asm sideeffect "", ""()
51   br label %endif
53 endif:
54   store volatile i32 1, i32 addrspace(1)* %out
55   ret void
58 ; GCN-LABEL: {{^}}br_scc_ne_i32_simm16_max_p1:
59 ; GCN: s_cmpk_lg_u32 s{{[0-9]+}}, 0x8000{{$}}
60 define amdgpu_kernel void @br_scc_ne_i32_simm16_max_p1(i32 %cond, i32 addrspace(1)* %out) #0 {
61 entry:
62   %cmp0 = icmp ne i32 %cond, 32768
63   br i1 %cmp0, label %endif, label %if
65 if:
66   call void asm sideeffect "", ""()
67   br label %endif
69 endif:
70   store volatile i32 1, i32 addrspace(1)* %out
71   ret void
74 ; GCN-LABEL: {{^}}br_scc_eq_i32_simm16_min:
75 ; GCN: s_cmpk_eq_i32 s{{[0-9]+}}, 0x8000{{$}}
76 define amdgpu_kernel void @br_scc_eq_i32_simm16_min(i32 %cond, i32 addrspace(1)* %out) #0 {
77 entry:
78   %cmp0 = icmp eq i32 %cond, -32768
79   br i1 %cmp0, label %endif, label %if
81 if:
82   call void asm sideeffect "", ""()
83   br label %endif
85 endif:
86   store volatile i32 1, i32 addrspace(1)* %out
87   ret void
90 ; GCN-LABEL: {{^}}br_scc_eq_i32_simm16_min_m1:
91 ; GCN: s_cmp_eq_u32 s{{[0-9]+}}, 0xffff7fff{{$}}
92 define amdgpu_kernel void @br_scc_eq_i32_simm16_min_m1(i32 %cond, i32 addrspace(1)* %out) #0 {
93 entry:
94   %cmp0 = icmp eq i32 %cond, -32769
95   br i1 %cmp0, label %endif, label %if
97 if:
98   call void asm sideeffect "", ""()
99   br label %endif
101 endif:
102   store volatile i32 1, i32 addrspace(1)* %out
103   ret void
106 ; GCN-LABEL: {{^}}br_scc_eq_i32_uimm15_max:
107 ; GCN: s_cmpk_eq_u32 s{{[0-9]+}}, 0xffff{{$}}
108 define amdgpu_kernel void @br_scc_eq_i32_uimm15_max(i32 %cond, i32 addrspace(1)* %out) #0 {
109 entry:
110   %cmp0 = icmp eq i32 %cond, 65535
111   br i1 %cmp0, label %endif, label %if
114   call void asm sideeffect "", ""()
115   br label %endif
117 endif:
118   store volatile i32 1, i32 addrspace(1)* %out
119   ret void
122 ; GCN-LABEL: {{^}}br_scc_eq_i32_uimm16_max:
123 ; GCN: s_cmpk_eq_u32 s{{[0-9]+}}, 0xffff{{$}}
124 define amdgpu_kernel void @br_scc_eq_i32_uimm16_max(i32 %cond, i32 addrspace(1)* %out) #0 {
125 entry:
126   %cmp0 = icmp eq i32 %cond, 65535
127   br i1 %cmp0, label %endif, label %if
130   call void asm sideeffect "", ""()
131   br label %endif
133 endif:
134   store volatile i32 1, i32 addrspace(1)* %out
135   ret void
138 ; GCN-LABEL: {{^}}br_scc_eq_i32_uimm16_max_p1:
139 ; GCN: s_cmp_eq_u32 s{{[0-9]+}}, 0x10000{{$}}
140 define amdgpu_kernel void @br_scc_eq_i32_uimm16_max_p1(i32 %cond, i32 addrspace(1)* %out) #0 {
141 entry:
142   %cmp0 = icmp eq i32 %cond, 65536
143   br i1 %cmp0, label %endif, label %if
146   call void asm sideeffect "", ""()
147   br label %endif
149 endif:
150   store volatile i32 1, i32 addrspace(1)* %out
151   ret void
155 ; GCN-LABEL: {{^}}br_scc_eq_i32:
156 ; GCN: s_cmpk_eq_i32 s{{[0-9]+}}, 0x41{{$}}
157 define amdgpu_kernel void @br_scc_eq_i32(i32 %cond, i32 addrspace(1)* %out) #0 {
158 entry:
159   %cmp0 = icmp eq i32 %cond, 65
160   br i1 %cmp0, label %endif, label %if
163   call void asm sideeffect "", ""()
164   br label %endif
166 endif:
167   store volatile i32 1, i32 addrspace(1)* %out
168   ret void
171 ; GCN-LABEL: {{^}}br_scc_ne_i32:
172 ; GCN: s_cmpk_lg_i32 s{{[0-9]+}}, 0x41{{$}}
173 define amdgpu_kernel void @br_scc_ne_i32(i32 %cond, i32 addrspace(1)* %out) #0 {
174 entry:
175   %cmp0 = icmp ne i32 %cond, 65
176   br i1 %cmp0, label %endif, label %if
179   call void asm sideeffect "", ""()
180   br label %endif
182 endif:
183   store volatile i32 1, i32 addrspace(1)* %out
184   ret void
187 ; GCN-LABEL: {{^}}br_scc_sgt_i32:
188 ; GCN: s_cmpk_gt_i32 s{{[0-9]+}}, 0x41{{$}}
189 define amdgpu_kernel void @br_scc_sgt_i32(i32 %cond, i32 addrspace(1)* %out) #0 {
190 entry:
191   %cmp0 = icmp sgt i32 %cond, 65
192   br i1 %cmp0, label %endif, label %if
195   call void asm sideeffect "", ""()
196   br label %endif
198 endif:
199   store volatile i32 1, i32 addrspace(1)* %out
200   ret void
203 ; GCN-LABEL: {{^}}br_scc_sgt_i32_simm16_max:
204 ; GCN: s_cmpk_gt_i32 s{{[0-9]+}}, 0x7fff{{$}}
205 define amdgpu_kernel void @br_scc_sgt_i32_simm16_max(i32 %cond, i32 addrspace(1)* %out) #0 {
206 entry:
207   %cmp0 = icmp sgt i32 %cond, 32767
208   br i1 %cmp0, label %endif, label %if
211   call void asm sideeffect "", ""()
212   br label %endif
214 endif:
215   store volatile i32 1, i32 addrspace(1)* %out
216   ret void
219 ; GCN-LABEL: {{^}}br_scc_sgt_i32_simm16_max_p1:
220 ; GCN: s_cmp_gt_i32 s{{[0-9]+}}, 0x8000{{$}}
221 define amdgpu_kernel void @br_scc_sgt_i32_simm16_max_p1(i32 %cond, i32 addrspace(1)* %out) #0 {
222 entry:
223   %cmp0 = icmp sgt i32 %cond, 32768
224   br i1 %cmp0, label %endif, label %if
227   call void asm sideeffect "", ""()
228   br label %endif
230 endif:
231   store volatile i32 1, i32 addrspace(1)* %out
232   ret void
235 ; GCN-LABEL: {{^}}br_scc_sge_i32:
236 ; GCN: s_cmpk_ge_i32 s{{[0-9]+}}, 0x800{{$}}
237 define amdgpu_kernel void @br_scc_sge_i32(i32 %cond, i32 addrspace(1)* %out) #0 {
238 entry:
239   %size = call i32 @llvm.amdgcn.groupstaticsize()
240   %cmp0 = icmp sge i32 %cond, %size
241   br i1 %cmp0, label %endif, label %if
244   call void asm sideeffect "; $0", "v"([512 x i32] addrspace(3)* @lds)
245   br label %endif
247 endif:
248   store volatile i32 1, i32 addrspace(1)* %out
249   ret void
252 ; GCN-LABEL: {{^}}br_scc_slt_i32:
253 ; GCN: s_cmpk_lt_i32 s{{[0-9]+}}, 0x41{{$}}
254 define amdgpu_kernel void @br_scc_slt_i32(i32 %cond, i32 addrspace(1)* %out) #0 {
255 entry:
256   %cmp0 = icmp slt i32 %cond, 65
257   br i1 %cmp0, label %endif, label %if
260   call void asm sideeffect "", ""()
261   br label %endif
263 endif:
264   store volatile i32 1, i32 addrspace(1)* %out
265   ret void
268 ; GCN-LABEL: {{^}}br_scc_sle_i32:
269 ; GCN: s_cmpk_le_i32 s{{[0-9]+}}, 0x800{{$}}
270 define amdgpu_kernel void @br_scc_sle_i32(i32 %cond, i32 addrspace(1)* %out) #0 {
271 entry:
272   %size = call i32 @llvm.amdgcn.groupstaticsize()
273   %cmp0 = icmp sle i32 %cond, %size
274   br i1 %cmp0, label %endif, label %if
277   call void asm sideeffect "; $0", "v"([512 x i32] addrspace(3)* @lds)
278   br label %endif
280 endif:
281   store volatile i32 1, i32 addrspace(1)* %out
282   ret void
285 ; GCN-LABEL: {{^}}br_scc_ugt_i32:
286 ; GCN: s_cmpk_gt_u32 s{{[0-9]+}}, 0x800{{$}}
287 define amdgpu_kernel void @br_scc_ugt_i32(i32 %cond, i32 addrspace(1)* %out) #0 {
288 entry:
289   %size = call i32 @llvm.amdgcn.groupstaticsize()
290   %cmp0 = icmp ugt i32 %cond, %size
291   br i1 %cmp0, label %endif, label %if
294   call void asm sideeffect "; $0", "v"([512 x i32] addrspace(3)* @lds)
295   br label %endif
297 endif:
298   store volatile i32 1, i32 addrspace(1)* %out
299   ret void
302 ; GCN-LABEL: {{^}}br_scc_uge_i32:
303 ; GCN: s_cmpk_ge_u32 s{{[0-9]+}}, 0x800{{$}}
304 define amdgpu_kernel void @br_scc_uge_i32(i32 %cond, i32 addrspace(1)* %out) #0 {
305 entry:
306   %size = call i32 @llvm.amdgcn.groupstaticsize()
307   %cmp0 = icmp uge i32 %cond, %size
308   br i1 %cmp0, label %endif, label %if
311   call void asm sideeffect "; $0", "v"([512 x i32] addrspace(3)* @lds)
312   br label %endif
314 endif:
315   store volatile i32 1, i32 addrspace(1)* %out
316   ret void
319 ; GCN-LABEL: {{^}}br_scc_ult_i32:
320 ; GCN: s_cmpk_lt_u32 s{{[0-9]+}}, 0x41{{$}}
321 define amdgpu_kernel void @br_scc_ult_i32(i32 %cond, i32 addrspace(1)* %out) #0 {
322 entry:
323   %cmp0 = icmp ult i32 %cond, 65
324   br i1 %cmp0, label %endif, label %if
327   call void asm sideeffect "", ""()
328   br label %endif
330 endif:
331   store volatile i32 1, i32 addrspace(1)* %out
332   ret void
335 ; GCN-LABEL: {{^}}br_scc_ult_i32_min_simm16:
336 ; GCN: s_cmp_lt_u32 s2, 0xffff8000
337 define amdgpu_kernel void @br_scc_ult_i32_min_simm16(i32 %cond, i32 addrspace(1)* %out) #0 {
338 entry:
339   %cmp0 = icmp ult i32 %cond, -32768
340   br i1 %cmp0, label %endif, label %if
343   call void asm sideeffect "", ""()
344   br label %endif
346 endif:
347   store volatile i32 1, i32 addrspace(1)* %out
348   ret void
351 ; GCN-LABEL: {{^}}br_scc_ult_i32_min_simm16_m1:
352 ; GCN: s_cmp_lt_u32 s{{[0-9]+}}, 0xffff7fff{{$}}
353 define amdgpu_kernel void @br_scc_ult_i32_min_simm16_m1(i32 %cond, i32 addrspace(1)* %out) #0 {
354 entry:
355   %cmp0 = icmp ult i32 %cond, -32769
356   br i1 %cmp0, label %endif, label %if
359   call void asm sideeffect "", ""()
360   br label %endif
362 endif:
363   store volatile i32 1, i32 addrspace(1)* %out
364   ret void
367 ; GCN-LABEL: {{^}}br_scc_ule_i32:
368 ; GCN: s_cmpk_le_u32 s{{[0-9]+}}, 0x800{{$}}
369 define amdgpu_kernel void @br_scc_ule_i32(i32 %cond, i32 addrspace(1)* %out) #0 {
370 entry:
371   %size = call i32 @llvm.amdgcn.groupstaticsize()
372   %cmp0 = icmp ule i32 %cond, %size
373   br i1 %cmp0, label %endif, label %if
376   call void asm sideeffect "; $0", "v"([512 x i32] addrspace(3)* @lds)
377   br label %endif
379 endif:
380   store volatile i32 1, i32 addrspace(1)* %out
381   ret void
384 ; GCN-LABEL: {{^}}commute_br_scc_eq_i32:
385 ; GCN: s_cmpk_eq_i32 s{{[0-9]+}}, 0x800{{$}}
386 define amdgpu_kernel void @commute_br_scc_eq_i32(i32 %cond, i32 addrspace(1)* %out) #0 {
387 entry:
388   %size = call i32 @llvm.amdgcn.groupstaticsize()
389   %cmp0 = icmp eq i32 %size, %cond
390   br i1 %cmp0, label %endif, label %if
393   call void asm sideeffect "; $0", "v"([512 x i32] addrspace(3)* @lds)
394   br label %endif
396 endif:
397   store volatile i32 1, i32 addrspace(1)* %out
398   ret void
401 ; GCN-LABEL: {{^}}commute_br_scc_ne_i32:
402 ; GCN: s_cmpk_lg_i32 s{{[0-9]+}}, 0x800{{$}}
403 define amdgpu_kernel void @commute_br_scc_ne_i32(i32 %cond, i32 addrspace(1)* %out) #0 {
404 entry:
405   %size = call i32 @llvm.amdgcn.groupstaticsize()
406   %cmp0 = icmp ne i32 %size, %cond
407   br i1 %cmp0, label %endif, label %if
410   call void asm sideeffect "; $0", "v"([512 x i32] addrspace(3)* @lds)
411   br label %endif
413 endif:
414   store volatile i32 1, i32 addrspace(1)* %out
415   ret void
418 ; GCN-LABEL: {{^}}commute_br_scc_sgt_i32:
419 ; GCN: s_cmpk_lt_i32 s{{[0-9]+}}, 0x800{{$}}
420 define amdgpu_kernel void @commute_br_scc_sgt_i32(i32 %cond, i32 addrspace(1)* %out) #0 {
421 entry:
422   %size = call i32 @llvm.amdgcn.groupstaticsize()
423   %cmp0 = icmp sgt i32 %size, %cond
424   br i1 %cmp0, label %endif, label %if
427   call void asm sideeffect "; $0", "v"([512 x i32] addrspace(3)* @lds)
428   br label %endif
430 endif:
431   store volatile i32 1, i32 addrspace(1)* %out
432   ret void
435 ; GCN-LABEL: {{^}}commute_br_scc_sge_i32:
436 ; GCN: s_cmpk_le_i32 s{{[0-9]+}}, 0x800{{$}}
437 define amdgpu_kernel void @commute_br_scc_sge_i32(i32 %cond, i32 addrspace(1)* %out) #0 {
438 entry:
439   %size = call i32 @llvm.amdgcn.groupstaticsize()
440   %cmp0 = icmp sge i32 %size, %cond
441   br i1 %cmp0, label %endif, label %if
444   call void asm sideeffect "; $0", "v"([512 x i32] addrspace(3)* @lds)
445   br label %endif
447 endif:
448   store volatile i32 1, i32 addrspace(1)* %out
449   ret void
452 ; GCN-LABEL: {{^}}commute_br_scc_slt_i32:
453 ; GCN: s_cmpk_gt_i32 s{{[0-9]+}}, 0x800{{$}}
454 define amdgpu_kernel void @commute_br_scc_slt_i32(i32 %cond, i32 addrspace(1)* %out) #0 {
455 entry:
456   %size = call i32 @llvm.amdgcn.groupstaticsize()
457   %cmp0 = icmp slt i32 %size, %cond
458   br i1 %cmp0, label %endif, label %if
461   call void asm sideeffect "; $0", "v"([512 x i32] addrspace(3)* @lds)
462   br label %endif
464 endif:
465   store volatile i32 1, i32 addrspace(1)* %out
466   ret void
469 ; GCN-LABEL: {{^}}commute_br_scc_sle_i32:
470 ; GCN: s_cmpk_ge_i32 s{{[0-9]+}}, 0x800{{$}}
471 define amdgpu_kernel void @commute_br_scc_sle_i32(i32 %cond, i32 addrspace(1)* %out) #0 {
472 entry:
473   %size = call i32 @llvm.amdgcn.groupstaticsize()
474   %cmp0 = icmp sle i32 %size, %cond
475   br i1 %cmp0, label %endif, label %if
478   call void asm sideeffect "; $0", "v"([512 x i32] addrspace(3)* @lds)
479   br label %endif
481 endif:
482   store volatile i32 1, i32 addrspace(1)* %out
483   ret void
486 ; GCN-LABEL: {{^}}commute_br_scc_ugt_i32:
487 ; GCN: s_cmpk_lt_u32 s{{[0-9]+}}, 0x800{{$}}
488 define amdgpu_kernel void @commute_br_scc_ugt_i32(i32 %cond, i32 addrspace(1)* %out) #0 {
489 entry:
490   %size = call i32 @llvm.amdgcn.groupstaticsize()
491   %cmp0 = icmp ugt i32 %size, %cond
492   br i1 %cmp0, label %endif, label %if
495   call void asm sideeffect "; $0", "v"([512 x i32] addrspace(3)* @lds)
496   br label %endif
498 endif:
499   store volatile i32 1, i32 addrspace(1)* %out
500   ret void
503 ; GCN-LABEL: {{^}}commute_br_scc_uge_i32:
504 ; GCN: s_cmpk_le_u32 s{{[0-9]+}}, 0x800{{$}}
505 define amdgpu_kernel void @commute_br_scc_uge_i32(i32 %cond, i32 addrspace(1)* %out) #0 {
506 entry:
507   %size = call i32 @llvm.amdgcn.groupstaticsize()
508   %cmp0 = icmp uge i32 %size, %cond
509   br i1 %cmp0, label %endif, label %if
512   call void asm sideeffect "; $0", "v"([512 x i32] addrspace(3)* @lds)
513   br label %endif
515 endif:
516   store volatile i32 1, i32 addrspace(1)* %out
517   ret void
520 ; GCN-LABEL: {{^}}commute_br_scc_ult_i32:
521 ; GCN: s_cmpk_gt_u32 s{{[0-9]+}}, 0x800{{$}}
522 define amdgpu_kernel void @commute_br_scc_ult_i32(i32 %cond, i32 addrspace(1)* %out) #0 {
523 entry:
524   %size = call i32 @llvm.amdgcn.groupstaticsize()
525   %cmp0 = icmp ult i32 %size, %cond
526   br i1 %cmp0, label %endif, label %if
529   call void asm sideeffect "; $0", "v"([512 x i32] addrspace(3)* @lds)
530   br label %endif
532 endif:
533   store volatile i32 1, i32 addrspace(1)* %out
534   ret void
537 ; GCN-LABEL: {{^}}commute_br_scc_ule_i32:
538 ; GCN: s_cmpk_ge_u32 s{{[0-9]+}}, 0x800{{$}}
539 define amdgpu_kernel void @commute_br_scc_ule_i32(i32 %cond, i32 addrspace(1)* %out) #0 {
540 entry:
541   %size = call i32 @llvm.amdgcn.groupstaticsize()
542   %cmp0 = icmp ule i32 %size, %cond
543   br i1 %cmp0, label %endif, label %if
546   call void asm sideeffect "; $0", "v"([512 x i32] addrspace(3)* @lds)
547   br label %endif
549 endif:
550   store volatile i32 1, i32 addrspace(1)* %out
551   ret void
554 ; GCN-LABEL: {{^}}br_scc_ult_i32_non_u16:
555 ; GCN: s_cmp_lt_u32 s2, 0xfffff7ff
556 define amdgpu_kernel void @br_scc_ult_i32_non_u16(i32 %cond, i32 addrspace(1)* %out) #0 {
557 entry:
558   %size = call i32 @llvm.amdgcn.groupstaticsize()
559   %not.size = xor i32 %size, -1
560   %cmp0 = icmp ult i32 %cond, %not.size
561   br i1 %cmp0, label %endif, label %if
564   call void asm sideeffect "; $0", "v"([512 x i32] addrspace(3)* @lds)
565   br label %endif
567 endif:
568   store volatile i32 1, i32 addrspace(1)* %out
569   ret void
572 ; GCN-LABEL: {{^}}br_scc_eq_i64_inline_imm:
573 ; VI: s_cmp_eq_u64 s{{\[[0-9]+:[0-9]+\]}}, 4
575 ; SI: v_cmp_eq_u64_e64
576 define amdgpu_kernel void @br_scc_eq_i64_inline_imm(i64 %cond, i32 addrspace(1)* %out) #0 {
577 entry:
578   %cmp0 = icmp eq i64 %cond, 4
579   br i1 %cmp0, label %endif, label %if
582   call void asm sideeffect "", ""()
583   br label %endif
585 endif:
586   store volatile i32 1, i32 addrspace(1)* %out
587   ret void
590 ; GCN-LABEL: {{^}}br_scc_eq_i64_simm16:
591 ; VI-DAG: s_movk_i32 s[[K_LO:[0-9]+]], 0x4d2
592 ; VI-DAG: s_mov_b32 s[[K_HI:[0-9]+]], 0
593 ; VI: s_cmp_eq_u64 s{{\[[0-9]+:[0-9]+\]}}, s{{\[}}[[K_LO]]:[[K_HI]]{{\]}}
595 ; SI: v_cmp_eq_u64_e32
596 define amdgpu_kernel void @br_scc_eq_i64_simm16(i64 %cond, i32 addrspace(1)* %out) #0 {
597 entry:
598   %cmp0 = icmp eq i64 %cond, 1234
599   br i1 %cmp0, label %endif, label %if
602   call void asm sideeffect "", ""()
603   br label %endif
605 endif:
606   store volatile i32 1, i32 addrspace(1)* %out
607   ret void
610 ; GCN-LABEL: {{^}}br_scc_ne_i64_inline_imm:
611 ; VI: s_cmp_lg_u64 s{{\[[0-9]+:[0-9]+\]}}, 4
613 ; SI: v_cmp_ne_u64_e64
614 define amdgpu_kernel void @br_scc_ne_i64_inline_imm(i64 %cond, i32 addrspace(1)* %out) #0 {
615 entry:
616   %cmp0 = icmp ne i64 %cond, 4
617   br i1 %cmp0, label %endif, label %if
620   call void asm sideeffect "", ""()
621   br label %endif
623 endif:
624   store volatile i32 1, i32 addrspace(1)* %out
625   ret void
628 ; GCN-LABEL: {{^}}br_scc_ne_i64_simm16:
629 ; VI-DAG: s_movk_i32 s[[K_LO:[0-9]+]], 0x4d2
630 ; VI-DAG: s_mov_b32 s[[K_HI:[0-9]+]], 0
631 ; VI: s_cmp_lg_u64 s{{\[[0-9]+:[0-9]+\]}}, s{{\[}}[[K_LO]]:[[K_HI]]{{\]}}
633 ; SI: v_cmp_ne_u64_e32
634 define amdgpu_kernel void @br_scc_ne_i64_simm16(i64 %cond, i32 addrspace(1)* %out) #0 {
635 entry:
636   %cmp0 = icmp ne i64 %cond, 1234
637   br i1 %cmp0, label %endif, label %if
640   call void asm sideeffect "", ""()
641   br label %endif
643 endif:
644   store volatile i32 1, i32 addrspace(1)* %out
645   ret void
648 attributes #0 = { nounwind }
649 attributes #1 = { nounwind readnone }