1; RUN: opt %s -mtriple amdgcn-- -enable-new-pm=0 -analyze -divergence -use-gpu-divergence-analysis | FileCheck %s
2; RUN: opt -mtriple amdgcn-- -passes='print<divergence>' -disable-output %s 2>&1 | FileCheck %s
3
4; CHECK-LABEL: Divergence Analysis' for function 'test_amdgpu_ps':
5; CHECK: DIVERGENT:  [4 x <16 x i8>] addrspace(4)* %arg0
6; CHECK-NOT: DIVERGENT
7; CHECK: DIVERGENT:  <2 x i32> %arg3
8; CHECK: DIVERGENT:  <3 x i32> %arg4
9; CHECK: DIVERGENT:  float %arg5
10; CHECK: DIVERGENT:  i32 %arg6
11
12define amdgpu_ps void @test_amdgpu_ps([4 x <16 x i8>] addrspace(4)* byref([4 x <16 x i8>]) %arg0, float inreg %arg1, i32 inreg %arg2, <2 x i32> %arg3, <3 x i32> %arg4, float %arg5, i32 %arg6) #0 {
13  ret void
14}
15
16; CHECK-LABEL: Divergence Analysis' for function 'test_amdgpu_kernel':
17; CHECK-NOT: %arg0
18; CHECK-NOT: %arg1
19; CHECK-NOT: %arg2
20; CHECK-NOT: %arg3
21; CHECK-NOT: %arg4
22; CHECK-NOT: %arg5
23; CHECK-NOT: %arg6
24define amdgpu_kernel void @test_amdgpu_kernel([4 x <16 x i8>] addrspace(4)* byref([4 x <16 x i8>]) %arg0, float inreg %arg1, i32 inreg %arg2, <2 x i32> %arg3, <3 x i32> %arg4, float %arg5, i32 %arg6) #0 {
25  ret void
26}
27
28; CHECK-LABEL: Divergence Analysis' for function 'test_c':
29; CHECK: DIVERGENT:
30; CHECK: DIVERGENT:
31; CHECK: DIVERGENT:
32; CHECK: DIVERGENT:
33; CHECK: DIVERGENT:
34; CHECK: DIVERGENT:
35; CHECK: DIVERGENT:
36define void @test_c([4 x <16 x i8>] addrspace(5)* byval([4 x <16 x i8>]) %arg0, float inreg %arg1, i32 inreg %arg2, <2 x i32> %arg3, <3 x i32> %arg4, float %arg5, i32 %arg6) #0 {
37  ret void
38}
39
40attributes #0 = { nounwind }
41