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