[clang] Fix crashes when passing VLA to va_arg (#119563)
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / divergence-driven-min-max.ll
blob45c805aa1b80c74313e036a86d89f7f2d0c8554f
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
4 ; GCN-LABEL: name:            uniform_imin
5 ; GCN: S_MIN_I32
6 define 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
13 ; GCN-LABEL: name:            divergent_imin
14 ; GCN: V_MIN_I32_e64
15 define 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
22 ; GCN-LABEL: name:            uniform_umin
23 ; GCN: S_MIN_U32
24 define 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
31 ; GCN-LABEL: name:            divergent_umin
32 ; GCN: V_MIN_U32_e64
33 define 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
40 ; GCN-LABEL: name:            uniform_imax
41 ; GCN: S_MAX_I32
42 define 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
49 ; GCN-LABEL: name:            divergent_imax
50 ; GCN: V_MAX_I32_e64
51 define 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
58 ; GCN-LABEL: name:            uniform_umax
59 ; GCN: S_MAX_U32
60 define 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
67 ; GCN-LABEL: name:            divergent_umax
68 ; GCN: V_MAX_U32_e64
69 define 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