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