1*05d79e35SJay Foad; RUN: llc -march=amdgcn -stop-after=amdgpu-isel < %s | FileCheck -check-prefix=GCN %s
2*05d79e35SJay Foad
3*05d79e35SJay Foad; GCN-FUNC: uniform_bitreverse_i32
4*05d79e35SJay Foad; GCN: S_BREV_B32
5*05d79e35SJay Foaddefine amdgpu_kernel void @uniform_bitreverse_i32(i32 %val, i32 addrspace(1)* %out) {
6*05d79e35SJay Foad  %res = call i32 @llvm.bitreverse.i32(i32 %val)
7*05d79e35SJay Foad  store i32 %res, i32 addrspace(1)* %out
8*05d79e35SJay Foad  ret void
9*05d79e35SJay Foad}
10*05d79e35SJay Foad
11*05d79e35SJay Foad; GCN-FUNC: divergent_bitreverse_i32
12*05d79e35SJay Foad; GCN: V_BFREV_B32
13*05d79e35SJay Foaddefine amdgpu_kernel void @divergent_bitreverse_i32(i32 %val, i32 addrspace(1)* %out) {
14*05d79e35SJay Foad  %tid = call i32 @llvm.amdgcn.workitem.id.x()
15*05d79e35SJay Foad  %divergent = add i32 %val, %tid
16*05d79e35SJay Foad  %res = call i32 @llvm.bitreverse.i32(i32 %divergent)
17*05d79e35SJay Foad  store i32 %res, i32 addrspace(1)* %out
18*05d79e35SJay Foad  ret void
19*05d79e35SJay Foad}
20*05d79e35SJay Foad
21*05d79e35SJay Foad; GCN-FUNC: uniform_bitreverse_i64
22*05d79e35SJay Foad; GCN: S_BREV_B64
23*05d79e35SJay Foaddefine amdgpu_kernel void @uniform_bitreverse_i64(i64 %val, i64 addrspace(1)* %out) {
24*05d79e35SJay Foad  %res = call i64 @llvm.bitreverse.i64(i64 %val)
25*05d79e35SJay Foad  store i64 %res, i64 addrspace(1)* %out
26*05d79e35SJay Foad  ret void
27*05d79e35SJay Foad}
28*05d79e35SJay Foad
29*05d79e35SJay Foad; GCN-FUNC: divergent_bitreverse_i64
30*05d79e35SJay Foad; GCN: V_BFREV_B32
31*05d79e35SJay Foad; GCN: V_BFREV_B32
32*05d79e35SJay Foaddefine amdgpu_kernel void @divergent_bitreverse_i64(i64 %val, i64 addrspace(1)* %out) {
33*05d79e35SJay Foad  %tid = call i32 @llvm.amdgcn.workitem.id.x()
34*05d79e35SJay Foad  %ext = zext i32 %tid to i64
35*05d79e35SJay Foad  %divergent = add i64 %val, %ext
36*05d79e35SJay Foad  %res = call i64 @llvm.bitreverse.i64(i64 %divergent)
37*05d79e35SJay Foad  store i64 %res, i64 addrspace(1)* %out
38*05d79e35SJay Foad  ret void
39*05d79e35SJay Foad}
40*05d79e35SJay Foad
41*05d79e35SJay Foaddeclare i32 @llvm.amdgcn.workitem.id.x()
42*05d79e35SJay Foaddeclare i32 @llvm.bitreverse.i32(i32)
43*05d79e35SJay Foaddeclare i64 @llvm.bitreverse.i64(i64)
44