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