[clang][modules] Don't prevent translation of FW_Private includes when explicitly...
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / divergence-driven-min-max.ll
blob72e4a929f587b2168055a2626481cba119671aee
1 ; RUN: llc -march=amdgcn -stop-after=amdgpu-isel < %s | FileCheck -check-prefix=GCN %s
3 ; GCN-LABEL: name:            uniform_imin
4 ; GCN: S_MIN_I32
5 define amdgpu_kernel void @uniform_imin(ptr 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, ptr addrspace(1) %out, align 4
9   ret void
12 ; GCN-LABEL: name:            divergent_imin
13 ; GCN: V_MIN_I32_e64
14 define void @divergent_imin(ptr 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, ptr addrspace(1) %out, align 4
18   ret void
21 ; GCN-LABEL: name:            uniform_umin
22 ; GCN: S_MIN_U32
23 define amdgpu_kernel void @uniform_umin(ptr 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, ptr addrspace(1) %out, align 8
27   ret void
30 ; GCN-LABEL: name:            divergent_umin
31 ; GCN: V_MIN_U32_e64
32 define void @divergent_umin(ptr 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, ptr addrspace(1) %out, align 8
36   ret void
39 ; GCN-LABEL: name:            uniform_imax
40 ; GCN: S_MAX_I32
41 define amdgpu_kernel void @uniform_imax(ptr 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, ptr addrspace(1) %out, align 4
45   ret void
48 ; GCN-LABEL: name:            divergent_imax
49 ; GCN: V_MAX_I32_e64
50 define void @divergent_imax(ptr 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, ptr addrspace(1) %out, align 4
54   ret void
57 ; GCN-LABEL: name:            uniform_umax
58 ; GCN: S_MAX_U32
59 define amdgpu_kernel void @uniform_umax(ptr 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, ptr addrspace(1) %out, align 4
63   ret void
66 ; GCN-LABEL: name:            divergent_umax
67 ; GCN: V_MAX_U32_e64
68 define void @divergent_umax(ptr 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, ptr addrspace(1) %out, align 4
72   ret void