mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-04-01 12:43:47 +00:00
Fix amdgcn-amdhsa on llvm-3.9
Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu> Acked-by: Aaron Watry <awatry@gmail.com> llvm-svn: 314548
This commit is contained in:
parent
aee030f284
commit
2b7fa1c6f6
@ -13,7 +13,7 @@ matrix:
|
||||
- LABEL="make gcc LLVM-3.9"
|
||||
- LLVM_VERSION=3.9
|
||||
- LLVM_CONFIG="llvm-config-${LLVM_VERSION}"
|
||||
- CHECK_FILES="barts-r600--.bc cayman-r600--.bc cedar-r600--.bc cypress-r600--.bc tahiti-amdgcn--.bc"
|
||||
- CHECK_FILES="barts-r600--.bc cayman-r600--.bc cedar-r600--.bc cypress-r600--.bc tahiti-amdgcn--.bc amdgcn--amdhsa.bc"
|
||||
addons:
|
||||
apt:
|
||||
sources:
|
||||
|
@ -1,4 +1 @@
|
||||
workitem/get_num_groups.ll
|
||||
workitem/get_global_size.39.ll
|
||||
workitem/get_local_size.39.ll
|
||||
workitem/get_num_groups.39.ll
|
||||
|
3
libclc/amdgcn-amdhsa/lib/OVERRIDES_3.9
Normal file
3
libclc/amdgcn-amdhsa/lib/OVERRIDES_3.9
Normal file
@ -0,0 +1,3 @@
|
||||
workitem/get_global_size.ll
|
||||
workitem/get_local_size.ll
|
||||
workitem/get_num_groups.39.ll
|
2
libclc/amdgcn-amdhsa/lib/SOURCES_3.9
Normal file
2
libclc/amdgcn-amdhsa/lib/SOURCES_3.9
Normal file
@ -0,0 +1,2 @@
|
||||
workitem/get_global_size.39.ll
|
||||
workitem/get_local_size.39.ll
|
36
libclc/amdgcn-amdhsa/lib/workitem/get_global_size.39.ll
Normal file
36
libclc/amdgcn-amdhsa/lib/workitem/get_global_size.39.ll
Normal file
@ -0,0 +1,36 @@
|
||||
declare i8 addrspace(2)* @llvm.amdgcn.dispatch.ptr() #0
|
||||
|
||||
define i32 @get_global_size(i32 %dim) #1 {
|
||||
%dispatch_ptr = call noalias nonnull dereferenceable(64) i8 addrspace(2)* @llvm.amdgcn.dispatch.ptr()
|
||||
switch i32 %dim, label %default [
|
||||
i32 0, label %x
|
||||
i32 1, label %y
|
||||
i32 2, label %z
|
||||
]
|
||||
|
||||
x:
|
||||
%ptr_x = getelementptr inbounds i8, i8 addrspace(2)* %dispatch_ptr, i32 12
|
||||
%ptr_x32 = bitcast i8 addrspace(2)* %ptr_x to i32 addrspace(2)*
|
||||
%x32 = load i32, i32 addrspace(2)* %ptr_x32, align 4, !invariant.load !0
|
||||
ret i32 %x32
|
||||
|
||||
y:
|
||||
%ptr_y = getelementptr inbounds i8, i8 addrspace(2)* %dispatch_ptr, i32 16
|
||||
%ptr_y32 = bitcast i8 addrspace(2)* %ptr_y to i32 addrspace(2)*
|
||||
%y32 = load i32, i32 addrspace(2)* %ptr_y32, align 4, !invariant.load !0
|
||||
ret i32 %y32
|
||||
|
||||
z:
|
||||
%ptr_z = getelementptr inbounds i8, i8 addrspace(2)* %dispatch_ptr, i32 20
|
||||
%ptr_z32 = bitcast i8 addrspace(2)* %ptr_z to i32 addrspace(2)*
|
||||
%z32 = load i32, i32 addrspace(2)* %ptr_z32, align 4, !invariant.load !0
|
||||
ret i32 %z32
|
||||
|
||||
default:
|
||||
ret i32 1
|
||||
}
|
||||
|
||||
attributes #0 = { nounwind readnone }
|
||||
attributes #1 = { alwaysinline norecurse nounwind readonly }
|
||||
|
||||
!0 = !{}
|
35
libclc/amdgcn-amdhsa/lib/workitem/get_local_size.39.ll
Normal file
35
libclc/amdgcn-amdhsa/lib/workitem/get_local_size.39.ll
Normal file
@ -0,0 +1,35 @@
|
||||
declare i8 addrspace(2)* @llvm.amdgcn.dispatch.ptr() #0
|
||||
|
||||
define i32 @get_local_size(i32 %dim) #1 {
|
||||
%dispatch_ptr = call noalias nonnull dereferenceable(64) i8 addrspace(2)* @llvm.amdgcn.dispatch.ptr()
|
||||
%dispatch_ptr_i32 = bitcast i8 addrspace(2)* %dispatch_ptr to i32 addrspace(2)*
|
||||
%xy_size_ptr = getelementptr inbounds i32, i32 addrspace(2)* %dispatch_ptr_i32, i32 1
|
||||
%xy_size = load i32, i32 addrspace(2)* %xy_size_ptr, align 4, !invariant.load !0
|
||||
switch i32 %dim, label %default [
|
||||
i32 0, label %x_dim
|
||||
i32 1, label %y_dim
|
||||
i32 2, label %z_dim
|
||||
]
|
||||
|
||||
x_dim:
|
||||
%x_size = and i32 %xy_size, 65535
|
||||
ret i32 %x_size
|
||||
|
||||
y_dim:
|
||||
%y_size = lshr i32 %xy_size, 16
|
||||
ret i32 %y_size
|
||||
|
||||
z_dim:
|
||||
%z_size_ptr = getelementptr inbounds i32, i32 addrspace(2)* %dispatch_ptr_i32, i32 2
|
||||
%z_size = load i32, i32 addrspace(2)* %z_size_ptr, align 4, !invariant.load !0, !range !1
|
||||
ret i32 %z_size
|
||||
|
||||
default:
|
||||
ret i32 1
|
||||
}
|
||||
|
||||
attributes #0 = { nounwind readnone }
|
||||
attributes #1 = { alwaysinline norecurse nounwind readonly }
|
||||
|
||||
!0 = !{}
|
||||
!1 = !{ i32 0, i32 257 }
|
Loading…
x
Reference in New Issue
Block a user