1; RUN: llc -march=amdgcn -stop-after=amdgpu-isel < %s | FileCheck -check-prefix=GCN %s
2
3; GCN-LABEL: name:            uniform_imin
4; GCN: S_MIN_I32
5define amdgpu_kernel void @uniform_imin(i32 addrspace(1)* %out, i32 %a, i32 %b) #0 {
6  %cmp = icmp sle i32 %a, %b
7  %val = select i1 %cmp, i32 %a, i32 %b
8  store i32 %val, i32 addrspace(1)* %out, align 4
9  ret void
10}
11
12; GCN-LABEL: name:            divergent_imin
13; GCN: V_MIN_I32_e64
14define void @divergent_imin(i32 addrspace(1)* %out, i32 %a, i32 %b) #0 {
15  %cmp = icmp sle i32 %a, %b
16  %val = select i1 %cmp, i32 %a, i32 %b
17  store i32 %val, i32 addrspace(1)* %out, align 4
18  ret void
19}
20
21; GCN-LABEL: name:            uniform_umin
22; GCN: S_MIN_U32
23define amdgpu_kernel void @uniform_umin(i32 addrspace(1)* %out, i32 %a, i32 %b) #0 {
24  %tmp = icmp ule i32 %a, %b
25  %val = select i1 %tmp, i32 %a, i32 %b
26  store i32 %val, i32 addrspace(1)* %out, align 8
27  ret void
28}
29
30; GCN-LABEL: name:            divergent_umin
31; GCN: V_MIN_U32_e64
32define void @divergent_umin(i32 addrspace(1)* %out, i32 %a, i32 %b) #0 {
33  %tmp = icmp ule i32 %a, %b
34  %val = select i1 %tmp, i32 %a, i32 %b
35  store i32 %val, i32 addrspace(1)* %out, align 8
36  ret void
37}
38
39; GCN-LABEL: name:            uniform_imax
40; GCN: S_MAX_I32
41define amdgpu_kernel void @uniform_imax(i32 addrspace(1)* %out, i32 %a, i32 %b) nounwind {
42  %cmp = icmp sge i32 %a, %b
43  %val = select i1 %cmp, i32 %a, i32 %b
44  store i32 %val, i32 addrspace(1)* %out, align 4
45  ret void
46}
47
48; GCN-LABEL: name:            divergent_imax
49; GCN: V_MAX_I32_e64
50define void @divergent_imax(i32 addrspace(1)* %out, i32 %a, i32 %b) nounwind {
51  %cmp = icmp sge i32 %a, %b
52  %val = select i1 %cmp, i32 %a, i32 %b
53  store i32 %val, i32 addrspace(1)* %out, align 4
54  ret void
55}
56
57; GCN-LABEL: name:            uniform_umax
58; GCN: S_MAX_U32
59define amdgpu_kernel void @uniform_umax(i32 addrspace(1)* %out, i32 %a, i32 %b) nounwind {
60  %cmp = icmp uge i32 %a, %b
61  %val = select i1 %cmp, i32 %a, i32 %b
62  store i32 %val, i32 addrspace(1)* %out, align 4
63  ret void
64}
65
66; GCN-LABEL: name:            divergent_umax
67; GCN: V_MAX_U32_e64
68define void @divergent_umax(i32 addrspace(1)* %out, i32 %a, i32 %b) nounwind {
69  %cmp = icmp uge i32 %a, %b
70  %val = select i1 %cmp, i32 %a, i32 %b
71  store i32 %val, i32 addrspace(1)* %out, align 4
72  ret void
73}
74