diff options
-rw-r--r-- | libclc/r600/lib/OVERRIDES_3.9 | 4 | ||||
-rw-r--r-- | libclc/r600/lib/OVERRIDES_4.0 | 4 | ||||
-rw-r--r-- | libclc/r600/lib/OVERRIDES_5.0 | 4 | ||||
-rw-r--r-- | libclc/r600/lib/OVERRIDES_6.0 | 4 | ||||
-rw-r--r-- | libclc/r600/lib/SOURCES_3.9 | 4 | ||||
-rw-r--r-- | libclc/r600/lib/SOURCES_4.0 | 4 | ||||
-rw-r--r-- | libclc/r600/lib/SOURCES_5.0 | 4 | ||||
-rw-r--r-- | libclc/r600/lib/SOURCES_6.0 | 4 | ||||
-rw-r--r-- | libclc/r600/lib/synchronization/barrier_impl.39.ll | 13 | ||||
-rw-r--r-- | libclc/r600/lib/synchronization/barrier_impl.ll | 2 | ||||
-rw-r--r-- | libclc/r600/lib/workitem/get_global_size.39.ll | 20 | ||||
-rw-r--r-- | libclc/r600/lib/workitem/get_global_size.ll | 2 | ||||
-rw-r--r-- | libclc/r600/lib/workitem/get_local_size.39.ll | 20 | ||||
-rw-r--r-- | libclc/r600/lib/workitem/get_local_size.ll | 2 | ||||
-rw-r--r-- | libclc/r600/lib/workitem/get_num_groups.39.ll | 20 | ||||
-rw-r--r-- | libclc/r600/lib/workitem/get_num_groups.ll | 2 |
16 files changed, 109 insertions, 4 deletions
diff --git a/libclc/r600/lib/OVERRIDES_3.9 b/libclc/r600/lib/OVERRIDES_3.9 new file mode 100644 index 00000000000..c055c6de1d1 --- /dev/null +++ b/libclc/r600/lib/OVERRIDES_3.9 @@ -0,0 +1,4 @@ +synchronization/barrier_impl.ll +workitem/get_global_size.ll +workitem/get_local_size.ll +workitem/get_num_groups.ll diff --git a/libclc/r600/lib/OVERRIDES_4.0 b/libclc/r600/lib/OVERRIDES_4.0 new file mode 100644 index 00000000000..c055c6de1d1 --- /dev/null +++ b/libclc/r600/lib/OVERRIDES_4.0 @@ -0,0 +1,4 @@ +synchronization/barrier_impl.ll +workitem/get_global_size.ll +workitem/get_local_size.ll +workitem/get_num_groups.ll diff --git a/libclc/r600/lib/OVERRIDES_5.0 b/libclc/r600/lib/OVERRIDES_5.0 new file mode 100644 index 00000000000..c055c6de1d1 --- /dev/null +++ b/libclc/r600/lib/OVERRIDES_5.0 @@ -0,0 +1,4 @@ +synchronization/barrier_impl.ll +workitem/get_global_size.ll +workitem/get_local_size.ll +workitem/get_num_groups.ll diff --git a/libclc/r600/lib/OVERRIDES_6.0 b/libclc/r600/lib/OVERRIDES_6.0 new file mode 100644 index 00000000000..c055c6de1d1 --- /dev/null +++ b/libclc/r600/lib/OVERRIDES_6.0 @@ -0,0 +1,4 @@ +synchronization/barrier_impl.ll +workitem/get_global_size.ll +workitem/get_local_size.ll +workitem/get_num_groups.ll diff --git a/libclc/r600/lib/SOURCES_3.9 b/libclc/r600/lib/SOURCES_3.9 index a44a9ce8074..ba09398ace4 100644 --- a/libclc/r600/lib/SOURCES_3.9 +++ b/libclc/r600/lib/SOURCES_3.9 @@ -13,3 +13,7 @@ image/write_imagef.cl image/write_imagei.cl image/write_imageui.cl image/write_image_impl.ll +synchronization/barrier_impl.39.ll +workitem/get_global_size.39.ll +workitem/get_local_size.39.ll +workitem/get_num_groups.39.ll diff --git a/libclc/r600/lib/SOURCES_4.0 b/libclc/r600/lib/SOURCES_4.0 new file mode 100644 index 00000000000..091990cbd56 --- /dev/null +++ b/libclc/r600/lib/SOURCES_4.0 @@ -0,0 +1,4 @@ +synchronization/barrier_impl.39.ll +workitem/get_global_size.39.ll +workitem/get_local_size.39.ll +workitem/get_num_groups.39.ll diff --git a/libclc/r600/lib/SOURCES_5.0 b/libclc/r600/lib/SOURCES_5.0 new file mode 100644 index 00000000000..091990cbd56 --- /dev/null +++ b/libclc/r600/lib/SOURCES_5.0 @@ -0,0 +1,4 @@ +synchronization/barrier_impl.39.ll +workitem/get_global_size.39.ll +workitem/get_local_size.39.ll +workitem/get_num_groups.39.ll diff --git a/libclc/r600/lib/SOURCES_6.0 b/libclc/r600/lib/SOURCES_6.0 new file mode 100644 index 00000000000..091990cbd56 --- /dev/null +++ b/libclc/r600/lib/SOURCES_6.0 @@ -0,0 +1,4 @@ +synchronization/barrier_impl.39.ll +workitem/get_global_size.39.ll +workitem/get_local_size.39.ll +workitem/get_num_groups.39.ll diff --git a/libclc/r600/lib/synchronization/barrier_impl.39.ll b/libclc/r600/lib/synchronization/barrier_impl.39.ll new file mode 100644 index 00000000000..3bd3167697a --- /dev/null +++ b/libclc/r600/lib/synchronization/barrier_impl.39.ll @@ -0,0 +1,13 @@ +declare void @llvm.r600.group.barrier() #0 + +target datalayout = "e-p:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024-v2048:2048-n32:64" + +define void @barrier(i32 %flags) #1 { +entry: + ; We should call mem_fence here, but that is not implemented for r600 yet + tail call void @llvm.r600.group.barrier() + ret void +} + +attributes #0 = { nounwind convergent } +attributes #1 = { nounwind convergent alwaysinline } diff --git a/libclc/r600/lib/synchronization/barrier_impl.ll b/libclc/r600/lib/synchronization/barrier_impl.ll index 3bd3167697a..cbc88671daf 100644 --- a/libclc/r600/lib/synchronization/barrier_impl.ll +++ b/libclc/r600/lib/synchronization/barrier_impl.ll @@ -1,6 +1,6 @@ declare void @llvm.r600.group.barrier() #0 -target datalayout = "e-p:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024-v2048:2048-n32:64" +target datalayout = "e-p:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024-v2048:2048-n32:64-A5" define void @barrier(i32 %flags) #1 { entry: diff --git a/libclc/r600/lib/workitem/get_global_size.39.ll b/libclc/r600/lib/workitem/get_global_size.39.ll new file mode 100644 index 00000000000..ea58c36285a --- /dev/null +++ b/libclc/r600/lib/workitem/get_global_size.39.ll @@ -0,0 +1,20 @@ +declare i32 @llvm.r600.read.global.size.x() nounwind readnone +declare i32 @llvm.r600.read.global.size.y() nounwind readnone +declare i32 @llvm.r600.read.global.size.z() nounwind readnone + +target datalayout = "e-p:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024-v2048:2048-n32:64" + +define i32 @get_global_size(i32 %dim) nounwind readnone alwaysinline { + switch i32 %dim, label %default [i32 0, label %x_dim i32 1, label %y_dim i32 2, label %z_dim] +x_dim: + %x = call i32 @llvm.r600.read.global.size.x() nounwind readnone + ret i32 %x +y_dim: + %y = call i32 @llvm.r600.read.global.size.y() nounwind readnone + ret i32 %y +z_dim: + %z = call i32 @llvm.r600.read.global.size.z() nounwind readnone + ret i32 %z +default: + ret i32 1 +} diff --git a/libclc/r600/lib/workitem/get_global_size.ll b/libclc/r600/lib/workitem/get_global_size.ll index ea58c36285a..8314d169a41 100644 --- a/libclc/r600/lib/workitem/get_global_size.ll +++ b/libclc/r600/lib/workitem/get_global_size.ll @@ -2,7 +2,7 @@ declare i32 @llvm.r600.read.global.size.x() nounwind readnone declare i32 @llvm.r600.read.global.size.y() nounwind readnone declare i32 @llvm.r600.read.global.size.z() nounwind readnone -target datalayout = "e-p:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024-v2048:2048-n32:64" +target datalayout = "e-p:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024-v2048:2048-n32:64-A5" define i32 @get_global_size(i32 %dim) nounwind readnone alwaysinline { switch i32 %dim, label %default [i32 0, label %x_dim i32 1, label %y_dim i32 2, label %z_dim] diff --git a/libclc/r600/lib/workitem/get_local_size.39.ll b/libclc/r600/lib/workitem/get_local_size.39.ll new file mode 100644 index 00000000000..c9f2c847577 --- /dev/null +++ b/libclc/r600/lib/workitem/get_local_size.39.ll @@ -0,0 +1,20 @@ +declare i32 @llvm.r600.read.local.size.x() nounwind readnone +declare i32 @llvm.r600.read.local.size.y() nounwind readnone +declare i32 @llvm.r600.read.local.size.z() nounwind readnone + +target datalayout = "e-p:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024-v2048:2048-n32:64" + +define i32 @get_local_size(i32 %dim) nounwind readnone alwaysinline { + switch i32 %dim, label %default [i32 0, label %x_dim i32 1, label %y_dim i32 2, label %z_dim] +x_dim: + %x = call i32 @llvm.r600.read.local.size.x() + ret i32 %x +y_dim: + %y = call i32 @llvm.r600.read.local.size.y() + ret i32 %y +z_dim: + %z = call i32 @llvm.r600.read.local.size.z() + ret i32 %z +default: + ret i32 1 +} diff --git a/libclc/r600/lib/workitem/get_local_size.ll b/libclc/r600/lib/workitem/get_local_size.ll index c9f2c847577..e4e7b1896f7 100644 --- a/libclc/r600/lib/workitem/get_local_size.ll +++ b/libclc/r600/lib/workitem/get_local_size.ll @@ -2,7 +2,7 @@ declare i32 @llvm.r600.read.local.size.x() nounwind readnone declare i32 @llvm.r600.read.local.size.y() nounwind readnone declare i32 @llvm.r600.read.local.size.z() nounwind readnone -target datalayout = "e-p:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024-v2048:2048-n32:64" +target datalayout = "e-p:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024-v2048:2048-n32:64-A5" define i32 @get_local_size(i32 %dim) nounwind readnone alwaysinline { switch i32 %dim, label %default [i32 0, label %x_dim i32 1, label %y_dim i32 2, label %z_dim] diff --git a/libclc/r600/lib/workitem/get_num_groups.39.ll b/libclc/r600/lib/workitem/get_num_groups.39.ll new file mode 100644 index 00000000000..74ca78b4920 --- /dev/null +++ b/libclc/r600/lib/workitem/get_num_groups.39.ll @@ -0,0 +1,20 @@ +declare i32 @llvm.r600.read.ngroups.x() nounwind readnone +declare i32 @llvm.r600.read.ngroups.y() nounwind readnone +declare i32 @llvm.r600.read.ngroups.z() nounwind readnone + +target datalayout = "e-p:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024-v2048:2048-n32:64" + +define i32 @get_num_groups(i32 %dim) nounwind readnone alwaysinline { + switch i32 %dim, label %default [i32 0, label %x_dim i32 1, label %y_dim i32 2, label %z_dim] +x_dim: + %x = call i32 @llvm.r600.read.ngroups.x() nounwind readnone + ret i32 %x +y_dim: + %y = call i32 @llvm.r600.read.ngroups.y() nounwind readnone + ret i32 %y +z_dim: + %z = call i32 @llvm.r600.read.ngroups.z() nounwind readnone + ret i32 %z +default: + ret i32 1 +} diff --git a/libclc/r600/lib/workitem/get_num_groups.ll b/libclc/r600/lib/workitem/get_num_groups.ll index 74ca78b4920..006ec34e428 100644 --- a/libclc/r600/lib/workitem/get_num_groups.ll +++ b/libclc/r600/lib/workitem/get_num_groups.ll @@ -2,7 +2,7 @@ declare i32 @llvm.r600.read.ngroups.x() nounwind readnone declare i32 @llvm.r600.read.ngroups.y() nounwind readnone declare i32 @llvm.r600.read.ngroups.z() nounwind readnone -target datalayout = "e-p:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024-v2048:2048-n32:64" +target datalayout = "e-p:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024-v2048:2048-n32:64-A5" define i32 @get_num_groups(i32 %dim) nounwind readnone alwaysinline { switch i32 %dim, label %default [i32 0, label %x_dim i32 1, label %y_dim i32 2, label %z_dim] |